Есть ли бесплатный способ конвертировать RTF в PDF?

Как я могу программно конвертировать документы RTF в PDF?

Ответов (8)

Решение

OpenOffice.org может работать в режиме сервера (т. Е. Без графического интерфейса пользователя), может читать файлы RTF и выводить файлы PDF.

Воспользуйтесь PDFCreator, бесплатным принтером в формате PDF. Просто распечатайте в pdf. Вы можете контролировать это через COM. Пример кода находится в папке COM каталога установки.

На вечеринку здесь опоздал на четыре года, но я использую Теда в своем веб-приложении. Я создаю RTF программно, а затем использую rtf2pdf.sh сценарий, включенный в пакет, для создания PDF-файла. Раньше я пробовал OOo и unoconv, но Тед оказался быстрее и надежнее в моем приложении.

LibreOffice может конвертировать документы RTF в PDF через командную строку.

Вот инструкции по установке на CentOS.

А это пример инициирования преобразования из кода PHP:

<?php shell_exec('libreoffice4.2 --headless --invisible --norestore --convert-to pdf test.rtf'); ?>

У вас есть несколько вариантов в зависимости от:

  • платформы, на которых будет работать ваше приложение
  • будет ли ваше приложение серверным (например, веб-сервисом, который вы настроили один раз, а затем он запускается) или широко доступным настольным приложением (например, чем-то, что должно быть легко загружено и установлено многими людьми)
  • готовы ли вы приложить немного или больше усилий для программирования, чтобы заставить решение работать
  • гибки ли вы в отношении языка программирования, который вы будете использовать

Вот несколько вариантов:

  1. PDFCreator + COM
    • Только Windows
    • подходит как для настольных, так и для серверных приложений
    • средние усилия по программированию
    • любой язык, на котором можно говорить COM
  2. OpenOffice (+ JODConverter - необязательно)
    • Кроссплатформенность (Windows, Linux и др.)
    • подходит для серверных приложений, так как OpenOffice требует загрузки более 100 МБ
    • низкие затраты на программирование
    • Java (при использовании JODConverter) или любой язык, который может взаимодействовать с OpenOffice UNO
  3. IText + Apache POI
    • Кроссплатформенность (Windows, Linux и др.)
    • подходит как для настольных, так и для серверных приложений
    • большие усилия по программированию
    • Джава

РЕДАКТИРОВАТЬ

Вот более старый пост, который имеет некоторую схожесть с вашим вопросом.


РЕДАКТИРОВАТЬ 2

Из ваших комментариев я вижу, что вы работаете в Linux и открыты как для C++, так и для Java. Обязательно воспользуйтесь вариантом 2.

  • JODConverter(Java): библиотека заботится о порождении OpenOfficeв безголовом режиме и разговаривает Unoс ней от вашего имени. Вы JODConverterуказываете имя файла ввода и вывода, а также типы ввода и вывода (например, rtf и pdf), и когда он возвращается вам, выходной файл готов.
  • C++: вы можете выполнить fork + exec один (или несколько, для балансировки нагрузки) экземпляров OpenOffice в автономном режиме (soffice будет прослушивать запросы UNO на сокете, например, порт 8100). Из вашего приложения используйте Uno / CPP, чтобы проинструктировать OpenOffice выполнить преобразование так JODConverterже (см. JODConverterисходный код, чтобы узнать, как это сделать.)

/opt/openoffice.org3/program/soffice.bin \
-accept=socket,host=127.0.0.1,port=8100;urp; \
-headless -nocrashreport -nodefault \
-nolockcheck -nologo -norestore

Я успешно использую JODConverterприложение Java для преобразования различных типов документов (некоторые документы, динамически генерируемые из шаблонов) в файлы pdf.

PDFCreator для Windows - самый простой вариант для отдельных документов.

Также можно автоматизировать создание PDF-файлов для больших наборов документов, преобразовав их в XML и используя XSLT и XSL-FO. Для этого существует множество руководств .

Для конкретного языка, такого как python, существуют библиотеки для вывода в PDF довольно тривиально.

Единственное преимущество XML перед другими более простыми решениями - это расширяемость. Вы также можете программно вывести свой документ в RTF, HTML, TXT или в любом другом текстовом формате.

PrimoPDF . Он действует как виртуальный принтер, поэтому вы просто печатаете на нем, и выскакивает PDF-файл.

Посмотрите на PDF-принтер