iTextSharp - конвертирует word doc / docx в pdf

Я понимаю, что iTextSharp можно использовать для преобразования документа в PDF.

Но сначала нам нужно создать документ с нуля, используя iTextSharp.text.Document, а затем добавить элементы в этот документ.

Что делать, если у меня есть существующий файл doc, можно ли преобразовать этот документ в pdf с помощью iTextSharp.

Кроме того, я хочу использовать iTextSharp или любой аналогичный инструмент, который может выполнять следующие действия с файлом документа:

  1. манипулирование doc / docx / текстовыми файлами (например, замена некоторых заполнителей значениями из БД), а также
  2. конвертирует их в .pdf

Если кто-нибудь знает об этом, поделитесь, пожалуйста.

Спасибо!


person inutan    schedule 08.10.2009    source источник
comment
Для максимальной гибкости вы можете рассмотреть отдельные лучшие в своем классе решения для каждого из этапов манипуляции и преобразования. В этом прелесть стандартных форматов файлов (doc, docx).   -  person JasonPlutext    schedule 17.02.2015


Ответы (6)


Компонент Aspose.Words могу сделать это надежно (я не аффилирован или что-то в этом роде).

iTextSharp не имеет необходимого набора функций для загрузки и обработки форматов файлов MS Word.

person Lucero    schedule 08.10.2009
comment
Спасибо за вашу помощь. В моем текущем сценарии я буду использовать библиотеку Aspose для манипуляций с doc / docx и, наконец, конвертировать полученный документ в pdf после слияния почты. Я загрузил бесплатную 30-дневную пробную версию, и, похоже, она решает все мои проблемы. Я бы посоветовал любому, кто собирается использовать Aspose, сначала получить пробную версию, а затем принять решение. - person inutan; 23.10.2009
comment
Aspose в большинстве случаев выполняет приятные преобразования OpenXml в PDF, но имейте в виду, что в настоящее время он имеет плохую или несуществующую поддержку некоторых функций Open XML, таких как элементы управления содержимым и узлы AltChunk. - person Collin K; 26.10.2011
comment
Недавняя альтернатива - коммерческий конвертер docx в PDF my / Plutext; попробуйте на converter-eval.plutext.com - person JasonPlutext; 12.05.2016
comment
Aspose слишком дорого обходится для стартап-проекта. - person Imran Faruqi; 21.08.2020

Aspose.Words - действительно хорошее решение, но оно не обеспечивает идеальной точности. На момент написания у него были проблемы с нелатинскими языками, сложным форматированием, таким как плавающие элементы, и рядом других проблем.

Вы можете просмотреть этот PDF-файл Веб-служба преобразования, которую можно использовать из любой среды, поддерживающей веб-службы, включая Java и .NET.

Обратите внимание, что я работал над этим проектом, поэтому применяются обычные заявления об отказе от ответственности.

person Jeroen Ritmeijer    schedule 22.07.2010
comment
Веб-служба PDF Conversion просто вызывает Microsoft Word для преобразования документов в PDF. Это просто Word Automation, и каждый может это сделать. - person romeok; 18.08.2010
comment
На самом деле он делает немного больше, но, зная, кто вы, вы так же предвзяты, как и я :-) Хорошая работа над Aspose.Words, отличный продукт, я рекомендую его все время. - person Jeroen Ritmeijer; 18.08.2010
comment
Стоимость вашей услуги конвертации составляет 1500 долларов за 1 сервер. @iniki может быть лучше с DynamicPDF Converter или Aspose по той же цене или меньше, и все это работает в управляемом коде и не требует установки Word или управления веб-службой. На ваш взгляд, однако, ничто не может предложить точность преобразования, которую может предложить автоматизация взаимодействия с пользователем. - person MikeTeeVee; 23.10.2012
comment
нелатинские или нелатинские, см. simple.wikipedia.org/wiki/Roman_alphabet (имел посмотреть, как вы заставили меня усомниться в себе :-) - person Jeroen Ritmeijer; 27.06.2013

Вы можете использовать существующий метод Microsoft.Office

 private Microsoft.Office.Interop.Word.ApplicationClass MSdoc;

    //Use for the parameter whose type are not known or say Missing
    object Unknown = Type.Missing;

  private void word2PDF(object Source, object Target)
    {   //Creating the instance of Word Application
      if (MSdoc == null)MSdoc = new Microsoft.Office.Interop.Word.ApplicationClass();

        try
        {
            MSdoc.Visible = false;
            MSdoc.Documents.Open(ref Source, ref Unknown,
                 ref Unknown, ref Unknown, ref Unknown,
                 ref Unknown, ref Unknown, ref Unknown,
                 ref Unknown, ref Unknown, ref Unknown,
                 ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown);
             MSdoc.Application.Visible = false;
              MSdoc.WindowState =   Microsoft.Office.Interop.Word.WdWindowState.wdWindowStateMinimize;

            object format = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF;

            MSdoc.ActiveDocument.SaveAs(ref Target, ref format,
                    ref Unknown, ref Unknown, ref Unknown,
                    ref Unknown, ref Unknown, ref Unknown,
                    ref Unknown, ref Unknown, ref Unknown,
                    ref Unknown, ref Unknown, ref Unknown,
                   ref Unknown, ref Unknown);
          }
           catch (Exception e)
          {
            MessageBox.Show(e.Message);
           }
         finally
          {
            if (MSdoc != null)
            {
                MSdoc.Documents.Close(ref Unknown, ref Unknown, ref Unknown);
                //WordDoc.Application.Quit(ref Unknown, ref Unknown, ref Unknown);
            }
            // for closing the application
            WordDoc.Quit(ref Unknown, ref Unknown, ref Unknown);
        }
    } 
person Shyam sundar shah    schedule 03.06.2013
comment
Конечно, просто имейте в виду, что при работе в серверной среде это не рекомендуется. См. support.microsoft.com/kb/257757 - person Daniel; 25.09.2013
comment
Выглядит хорошо, так как это офисная банка ms, но я не понимал, как ее использовать в своей программе. Я не мог получить офисную банку Microsoft. Не могли бы вы мне помочь? - person Nikhitha Reddy; 23.01.2015
comment
вам нужно будет использовать какую-то библиотеку взаимодействия COM, такую ​​как Jacob, чтобы иметь возможность обрабатывать эти объекты MS-Office непосредственно из кода Java (по крайней мере, так было в случае JDK 1.5) - даже тогда код выглядел бы немного уродливее. Судя по библиотеке ref и Interop, приведенный выше код написан на C # - person hello_earth; 08.12.2017

Если вас не волнует, будет ли форматирование соответствовать тому, что будет отображать Word, есть впечатляющий docx2tex который преобразует файлы Word 2007 docx в документы Latex. Находясь в Latex, у вас есть много возможностей для программного переформатирования документа и создания из него PDF.

Я говорю больше об этой утилите в ответе на tex.stackexchange.

person Charles Stewart    schedule 27.02.2010

У меня такая же проблема.
После нескольких дней попыток найти решение кажется, что Docx4J , инструмент на основе Java или принтеры PDF, такие как PDFCreator, могут быть среди бесплатного решения.
Конечно, только коммерческий инструмент может эффективно выполнить запрошенную задачу.
На стороне Microsoft вы можете использовать серверную Sharepoint Word Automation Services (проверка 7 июня 2016 г.) или взаимодействие на локальном компьютере.
Предлагаемая часть частичное преобразование (DOC или DOC в какой-то промежуточный язык, а затем в PDF) кажется невозможным для того, что пользователи сказали на stackoverflow или других форумах, потому что результат не такой, как ожидалось.

person JosefMadrid    schedule 07.06.2016

Для работы с docx следует использовать собственный метод Open XML. Загрузите Open XML SDK 2 от Microsoft.

А затем вы можете конвертировать файлы docx в pdf с помощью этой платной библиотеки: http://www.subsystems.com/dpw.htm. Это действительно здорово.

person mucit    schedule 08.10.2009
comment
это не здорово. Пробовал, везде меняет шрифты и убирает форматирование страниц. - person BuZz; 22.04.2013
comment
Это не здорово, @Franklin. Я согласен. Но как только вы преодолеете кривую обучения, вы сможете контролировать форматирование, шрифты и т. Д. Однако эта кривая обучения - отстой. - person Rap; 17.01.2014