Is there a free way to convert RTF to PDF?

这一生的挚爱 提交于 2019-11-27 00:37:59

问题


How can I programmatically convert RTF documents to PDF?


回答1:


OpenOffice.org can be run in server mode (i.e. without any GUI), can read RTF files and can output PDF files.




回答2:


You have a number of options depending on:

  • the platform(s) your application will be running on
  • whether your application will be a server application (e.g. a web service that you set up once and then it runs), or a widely-available desktop application (e.g. something that must be easily downloadable and installable by many people)
  • whether you are willing to put little or more programming effort into getting the solution to work
  • whether you are flexible as to the programming language you will use

Here are some options:

  1. PDFCreator + COM
    • Windows only
    • suitable for both desktop and server applications
    • medium programming effort
    • any language that allows you to speak COM
  2. OpenOffice ( + JODConverter - optional )
    • Cross-platform (Windows, Linux, etc.)
    • suitable for server applications, as OpenOffice is a 100MB+ download
    • low programming effort
    • Java (if using JODConverter), or any language that can interface with OpenOffice's UNO
  3. IText + Apache POI
    • Cross-platform (Windows, Linux, etc.)
    • suitable for both desktop and server applications
    • high programming effort
    • Java

EDIT

Here is an older post that has some commonality with your question.


EDIT 2

I see from your comments that you are on Linux and open to either C++ or Java. Definitely use option 2.

  • JODConverter (Java): the library takes care of spawning OpenOffice in headless mode and talking Uno to it on your behalf. You provide JODConverter with an input and output file name as well as the input and output types (e.g. rtf and pdf), and when it returns to you the output file is ready.
  • C++: you can fork+exec one (or more, for load balancing) OpenOffice instances in headless mode (soffice will listen for UNO requests on a socket e.g. port 8100.) From your application use Uno/CPP to instruct OpenOffice to perform the conversion the same way JODConverter does (see the JODConverter source code for how to do this.)

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

I am successfully using JODConverter from a Java app to convert miscellaneous document types (some documents dynamically generated from templates) to pdf.




回答3:


Four years late to the party here, but I use Ted in my web application. I generate RTF programmatically, then use the rtf2pdf.sh script included in the package to generate the PDF. I tried OOo and unoconv previously, but Ted proved faster and more reliable in my application.




回答4:


Use PDFCreator, a free pdf printer. Just print to pdf. You can control this through COM. Example code is in the COM folder of the install directory.




回答5:


PDFCreator for windows is the easiest for single documents.

It's also possible to automate PDF creation for large sets of documents by converting them to XML and using XSLT and XSL-FO. There are lots of tutorials for this out there.

For a specific language, such as python, libraries exist to output to PDF fairly trivially.

The only advantage of XML over other simpler solutions is extensibility. You could also programmatically output your document in RTF, HTML, TXT, or just about any other text format.




回答6:


LibreOffice can convert RTF documents to PDF via command line.

Here are the instructions to install it on CentOS.

And this is an example to initiate conversion from PHP code:

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



回答7:


PrimoPDF. It acts as a virtual printer, so you just print to it, and out pops a PDF.




回答8:


Look at PDF Printer



来源:https://stackoverflow.com/questions/586411/is-there-a-free-way-to-convert-rtf-to-pdf

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!