Ответов (8)8
OpenOffice.org может работать в режиме сервера (т. Е. Без графического интерфейса пользователя), может читать файлы RTF и выводить файлы PDF.
На вечеринку здесь опоздал на четыре года, но я использую Теда в своем веб-приложении. Я создаю RTF программно, а затем использую rtf2pdf.sh
сценарий, включенный в пакет, для создания PDF-файла. Раньше я пробовал OOo и unoconv, но Тед оказался быстрее и надежнее в моем приложении.
LibreOffice может конвертировать документы RTF в PDF через командную строку.
Вот инструкции по установке на CentOS.
А это пример инициирования преобразования из кода PHP:
<?php shell_exec('libreoffice4.2 --headless --invisible --norestore --convert-to pdf test.rtf'); ?>
У вас есть несколько вариантов в зависимости от:
- платформы, на которых будет работать ваше приложение
- будет ли ваше приложение серверным (например, веб-сервисом, который вы настроили один раз, а затем он запускается) или широко доступным настольным приложением (например, чем-то, что должно быть легко загружено и установлено многими людьми)
- готовы ли вы приложить немного или больше усилий для программирования, чтобы заставить решение работать
- гибки ли вы в отношении языка программирования, который вы будете использовать
Вот несколько вариантов:
- PDFCreator + COM
- Только Windows
- подходит как для настольных, так и для серверных приложений
- средние усилия по программированию
- любой язык, на котором можно говорить COM
- OpenOffice (+ JODConverter - необязательно)
- Кроссплатформенность (Windows, Linux и др.)
- подходит для серверных приложений, так как OpenOffice требует загрузки более 100 МБ
- низкие затраты на программирование
- Java (при использовании JODConverter) или любой язык, который может взаимодействовать с OpenOffice UNO
- 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-принтер