Как я могу преобразовать документ Word PDF, где документ содержит различные вещи, такие как таблицы. При попытке использовать iText, оригинал документа кажется другим преобразованному PDF. Существует ли API с открытым исходным кодом / библиотека, вместо того, чтобы обратиться к исполняемому файлу, который я могу использовать?
Это довольно сложная задача, еще сложнее, если вы хотите идеальных результатов (невозможно без использования Word), поэтому количество API-интерфейсов, которые просто делают все это за вас на чистой Java и имеют открытый исходный код, я считаю равным нулю ( Обновление: я ошибаюсь, см. Ниже ).
Ваши основные варианты следующие:
Обновление - 11 февраля 2016 г. Вот сокращенная копия моего сообщения в блоге на эту тему, в котором описаны существующие продукты, поддерживающие преобразование Word в PDF на Java.
Преобразование документов Microsoft Office (Word, Excel) в PDF-файлы на Java
Три известных мне продукта могут отображать документы Office:
yeokm1 / docs-to-pdf-converter Поддерживается нерегулярно, чистая Java , Открытый исходный код Связывает вместе несколько библиотек для выполнения преобразования.
xdocreport Активная разработка, чистая Java, открытый исходный код Это Java API для объединения XML-документа, созданного с помощью MS Office (docx) или OpenOffice (odt), LibreOffice (odt), с моделью Java для создания отчета и его преобразования, если вам нужно, в другой формат (PDF, XHTML ...).
Snowbound Imaging SDK Закрытый исходный код, чистая Java Snowbound представляет собой 100% Java-решение и стоит более 2500 долларов. Он содержит образцы, описывающие, как конвертировать документы в пробной загрузке.
OpenOffice API Открытый исходный код, не чистая Java - требуется установленный Open Office OpenOffice - это собственный пакет Office, который поддерживает Java API. Это поддерживает чтение документов Office и написание документов PDF. SDK содержит пример преобразования документа (examples / java / DocumentHandling / DocumentConverter.java). Чтобы писать PDF-файлы, вам нужно передать писатель "writer_pdf_Export", а не "MS Word 97". Или вы можете использовать API-оболочку JODConverter .
JDocToPdf - Мертвые по состоянию на 11 февраля 2016 г. Использует Apache POI для чтения документа Word и iText для записи PDF. Полностью бесплатный, 100% Java, но имеет некоторые ограничения .
Я согласен с теми, кто перечисляет OpenOffice как средство импорта/экспорта документов word / pdf с Java API, которое также работает на разных платформах. Фильтры импорта/экспорта OpenOffice довольно мощные и сохраняют большинство форматирования при преобразовании в различные форматы, включая PDF. Docmosis и JODReports добавляют ценность, чтобы сделать жизнь проще, чем изучение API OpenOffice напрямую, которое может быть сложным из-за стиля UNO api и ошибок, связанных с крахом.
Я не пробовал использовать его для MS Word, но у меня был хороший успех при чтении документов MS Excel с использованием Apache POI - http://poi.apache.org/
Изучите сценарий OpenOffice.org, который сделает эту работу за вас.
Для этой цели можно использовать JODConverter. Его можно использовать для преобразования документов между разными офисными форматами. такие как:
Подробнее об этом можно прочитать здесь: http://www.artofsolving.com/opensource/jodconverter