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

17

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

    
задан user63898 25.02.2009 в 16:18
источник
  • Каков ваш контекст? Вы пытаетесь сделать это на рабочем столе (варианты PDFCreator ниже хороши там)? Вы пытаетесь сделать это как часть веб-приложения? Что-то другое? Пожалуйста, отредактируйте свой вопрос, чтобы сообщить нам об этом. –  acrosman 25.02.2009 в 16:55
  • Вы работаете в Windows или какой-либо другой платформе? Вы ищете Java-решение для решения C / C ++ или это равнодушное? Будет ли это серверное приложение (например, веб-сервер) или настольное приложение (несколько пользователей будут его загружать и устанавливать?) –  vladr 25.02.2009 в 17:03
  • сторона сервера на linux c ++ или java –  user63898 26.02.2009 в 09:11
  • Тогда нет никаких вопросов об этом: используйте OpenOffice + JODConverter или OpenOffice с прямым интерфейсом C ++ UNO (он безголовый, не требует DISPLAY.) Я использую OpenOffice3 на Ubuntu - см. мои последние изменения ниже. –  vladr 26.02.2009 в 19:52

8 ответов

16

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

ответ дан Joachim Sauer 25.02.2009 в 16:47
источник
  • Это кросс-платформенный, но неподходящий для настольных приложений. Тем не менее, он очень подходит для работы за веб-сервером. –  vladr 25.02.2009 в 17:02
  • Это правда. Поскольку я балуюсь в основном на серверной Java, «кросс-платформенная» для меня намного важнее, чем «подходящая для настольного приложения» ;-) –  Joachim Sauer 25.02.2009 в 17:24
  • Кто-нибудь обновит это сообщение, чтобы дать некоторые рекомендации по настройке / рекомендациям на стороне сервера? –  Jerome 29.04.2013 в 13:54
  • Во-вторых, это; поиск информации о том, как это сделать на вики LibreOffice, является проблематичным. –  Vector Gorgoth 16.10.2013 в 22:45
  • Сегодня я просто попытался преобразовать Open-Office с помощью C # и позвольте мне сказать вам, это работает «хорошо», но не идеально. это означает, что некоторые выравнивания запутываются в процессе, и для коммерции это не будет сделано, если вы не хотите делать это с помощью очень простых документов, не тратьте впустую свое время на него. –  Stavm 11.05.2015 в 14:06
Показать остальные комментарии
14

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

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

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

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

ИЗМЕНИТЬ

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

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

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

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

    
ответ дан vladr 25.02.2009 в 17:25
источник
  • как объединить iText с poi для преобразования существующего rtf (с текстом allready внутри с дизайном) –  user63898 26.02.2009 в 09:14
  • Вы можете задать новый вопрос, связанный с объединением двух. Как я уже сказал, усилия по программированию высоки. Я знаю, что это было сделано, см. Сообщение chsrinivas123 на expert-exchange.com/Software/Server_Software/.... –  vladr 26.02.2009 в 19:39
  • iText не поддерживает RTF напрямую, сначала требуется конвертировать ваш документ в HTML \ XHTML, что в основном означает, что другой слой, который скорее всего не будет отображаться точно так же, как оригинальный RTF, просто попробовал, не был удовлетворен, все еще смотрящий. –  Stavm 11.05.2015 в 14:08
  • Что такое спам-мусор PDFCreator ... –  n1kkou 26.04.2018 в 20:37
3

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

    
ответ дан Mark 08.11.2013 в 14:26
источник
  • Я вижу, что у Ted нет возможности скрывать скрытый текст RTF-файла в преобразованном PDF-файле. –  shasi kanth 02.04.2014 в 14:32
2

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

    
ответ дан jle 25.02.2009 в 16:21
источник
  • Это, конечно же, будет работать только в Windows. –  vladr 25.02.2009 в 17:01
2

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

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

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

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

    
ответ дан Jon W 25.02.2009 в 16:33
источник
  • Это, конечно же, будет работать только в Windows. К сожалению, пока не выяснено, на какой платформе требуется решение. –  vladr 25.02.2009 в 22:35
  • , естественно. Хотя решение XSLT будет работать практически на любой платформе. –  Jon W 25.02.2009 в 22:35
1

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

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

И это пример, чтобы инициировать преобразование из кода PHP:

<?php shell_exec('libreoffice4.2 --headless --invisible --norestore --convert-to pdf test.rtf'); ?>
    
ответ дан shasi kanth 04.04.2014 в 11:59
источник
  • Приятно, большое спасибо –  dns 14.08.2014 в 10:17
  • Из всех вариантов я проверил этот вариант примерно 2 месяца назад, и, вероятно, это худшее для меня, оно полностью неверно истолковало структуру RTF, и я не могу сказать, что рекомендую делать даже небольшие и простые документы. не говоря уже о коммерческом использовании. не подпадайте под опцию «командной строки», вы получите лучшие результаты с Open Office, хотя для этого вам потребуется больше кода. –  Stavm 11.05.2015 в 14:12
0

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

    
ответ дан Steve Melnikoff 26.02.2009 в 00:26
источник
0

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

    
ответ дан 25.03.2009 в 14:25
источник