Есть ли бесплатный способ конвертировать RTF в PDF? - PullRequest
17 голосов
/ 25 февраля 2009

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

Ответы [ 8 ]

16 голосов
/ 25 февраля 2009

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

14 голосов
/ 25 февраля 2009

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

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

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

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

EDIT

Вот более старая запись , которая имеет некоторое сходство с вашим вопросом.


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

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

  • JODConverter (Java): библиотека заботится о том, чтобы порождать OpenOffice в режиме без головы и разговаривать с ней Uno от вашего имени. Вы предоставляете JODConverter имя файла ввода и вывода, а также типы ввода и вывода (например, rtf и pdf), а когда он возвращается к вам, файл вывода готов.
  • C ++: вы можете выполнить форк + 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.

3 голосов
/ 08 ноября 2013

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

2 голосов
/ 25 февраля 2009

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

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

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

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

2 голосов
/ 25 февраля 2009

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

1 голос
/ 04 апреля 2014

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

Здесь - инструкции по установке его в CentOS.

И это пример запуска преобразования из кода PHP:

<?php shell_exec('libreoffice4.2 --headless --invisible --norestore --convert-to pdf test.rtf'); ?>
0 голосов
/ 25 марта 2009

Посмотрите на PDF Printer

0 голосов
/ 26 февраля 2009

PrimoPDF . Он действует как виртуальный принтер, так что вы просто печатаете на него, и появляется PDF.

...