21

如何以编程方式将RTF文档转换为PDF

4

8 回答 8

17

OpenOffice.org可以在服务器模式下运行(即没有任何 GUI),可以读取 RTF 文件并可以输出 PDF 文件。

于 2009-02-25T15:47:12.313 回答
14

您有多种选择,具体取决于:

  • 您的应用程序将在哪个平台上运行
  • 您的应用程序将是服务器应用程序(例如,您设置一次然后运行的 Web 服务),还是广泛可用的桌面应用程序(例如,必须易于许多人下载和安装的应用程序)
  • 您是否愿意投入很少或更多的编程工作来使解决方案发挥作用
  • 您是否灵活地使用您将使用的编程语言

以下是一些选项:

  1. PDFCreator + COM
    • 仅限 Windows
    • 适用于桌面和服务器应用程序
    • 中等编程工作量
    • 任何可以让你说 COM 的语言
  2. OpenOffice(+ JODConverter - 可选)
    • 跨平台(Windows、Linux 等)
    • 适用于服务器应用程序,因为 OpenOffice 是 100MB+ 下载
    • 低编程工作量
    • 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

我成功地使用JODConverterJava 应用程序将杂项文档类型(一些从模板动态生成的文档)转换为pdf.

于 2009-02-25T16:25:52.860 回答
3

在这里聚会晚了四年,但我在我的 Web 应用程序中使用了Ted 。我以编程方式生成 RTF,然后使用rtf2pdf.sh包中包含的脚本生成 PDF。我之前尝试过 OOo 和 unoconv,但 Ted 在我的应用程序中被证明更快、更可靠。

于 2013-11-08T13:26:22.973 回答
2

使用 PDFCreator,一款免费的 pdf 打印机。只需打印为pdf。您可以通过 COM 控制它。示例代码位于安装目录的 COM 文件夹中。

于 2009-02-25T15:21:16.040 回答
2

PDFCreator for windows是最简单的单个文档。

还可以通过将大量文档转换为 XML 并使用 XSLT 和 XSL-FO 来自动为大量文档创建 PDF。有很多关于这个的教程

对于特定语言,例如 python,存在用于输出到 PDF 的库相当简单。

与其他更简单的解决方案相比,XML 的唯一优势是可扩展性。您还可以通过编程方式以 RTF、HTML、TXT 或几乎任何其他文本格式输出您的文档。

于 2009-02-25T15:33:07.200 回答
1

LibreOffice 可以通过命令行将 RTF 文档转换为 PDF。

以下是在 CentOS 上安装它的说明。

这是从 PHP 代码启动转换的示例:

<?php shell_exec('libreoffice4.2 --headless --invisible --norestore --convert-to pdf test.rtf'); ?>
于 2014-04-04T09:59:20.547 回答
0

普里莫PDF。它充当虚拟打印机,因此您只需打印到它,然后弹出一个 PDF。

于 2009-02-25T23:26:29.493 回答
0

PDF打印机

于 2009-03-25T13:25:26.427 回答