【问题标题】:Doc templates to PDF files in java (looking for tools/libs) [closed]Java中的文档模板到PDF文件(寻找工具/库)[关闭]
【发布时间】:2010-11-18 10:22:10
【问题描述】:

我尝试阅读相关问题,但没有找到任何新工具。 这是我的问题:我从我的应用程序中的数据生成了一些 PDF 文件用于保险。诸如合同、证书、账单等之类的东西。保险人员将模板文件作为 .docs 文件提供给我,其中包含字段,我必须用我的数据填写字段并生成 PDF。很简单的问题。

我没有消息,我在 java swing 中。

我不想在报告系统(如 BIRT 或 iReport)中重新创建 word doc,因为它很长、很痛苦,而且他们通常甚至无法做与 word 相同的布局。

我尝试在 .odt (OpenOffice) 中转换 .doc,更改表单字段中的字段,将 PDF 生成为 PDF 表单(未装饰的禁用字段,看起来像普通文本)并使用 iText 归档它们,但是我得到了便宜的结果(我无法在字段中选择字体,宽度是固定的,我无法正确对齐字段和周围文本中的基线等)

您有什么想法/工具可以用来填充这些字段,而无需在模板编辑器中重新创建 doc 文件?

这个问题很开放,我在寻找想法而不是你做功课。

【问题讨论】:

    标签: java swing pdf


    【解决方案1】:

    有创建 pdf 表单的免费应用程序,是否可以教保险人员使用它并为您的应用程序提供 pdf 表单模板而不是 word 模板?我参与了一个成功使用这种方法的应用程序。用户的工作流程变为:

    1. 使用任何应用程序(word、photoshop、其他...)创建文档
    2. 以 pdf 格式导出或打印
    3. 使用 pdf 表单编辑器在正确的位置添加字段。为内容使用占位符。
    4. 上传到服务器

    然后在服务器上替换占位符(如 ${context.person.firstname} ),pdf“扁平化”(将表单字段转换为文本)并返回填写的 pdf。我们使用了一组已定义的占位符,用户可以从中进行选择,并在需要时添加更多。这是用户希望使用他们选择的应用程序进行布局和我们希望避免使用多种格式(和 Office)之间的一个很好的折衷

    如果我没记错的话,我们使用 Scribus 作为 pdf 表单编辑器

    【讨论】:

    • 这几乎就是我所做的。但是这个“扁平化”的想法对我来说是新的,我会调查一下,谢谢。
    • 是的,看起来这不是一个复杂的代码:1t3xt.info/api/com/lowagie/text/pdf/…
    【解决方案2】:

    有点晚了,但如果其他人正在寻找 - 试试Docmosis。它使用文档作为模板(doc 或 odt),并且可以从 Java 填充和控制文档。它可以输出 pdf、doc、odf 等。它是 Darknights 解决方案的产品化版本(上图)——而且它是免费的!

    【讨论】:

      【解决方案3】:

      我创建了一个完整的应用程序(实际上它被移植了 3 次)来解决这种情况,其中一个版本是使用 OpenOffice,它具有 .Doc 模板(带有 bookmakrs),然后应用程序就像一个“服务器" 它有自己的内置文件夹监视程序,它将通过 XML 处理要求并使用 .doc/.dot 模板呈现 PDF 文档。

      遗憾的是,这是在服务器环境中运行的(并导致了问题,我从未设法让无头模式工作)

      但至少在理论上它是有效的。

      从查看 Open Office API 开始,您应该能够更改字体/样式/大小等,还有为什么在可以使用书签的情况下使用字段?这允许您跳转到预定义的光标(命名),然后插入任何内容(例如表格、图片、文本等)

      优秀的部分是在样式和修改模板方面,你只需要它的文字/OpenOffice。

      不知道有没有帮助

      暗夜

      【讨论】:

      • 我不知道书签是如何工作的,我会调查一下,谢谢。当我在书签中插入文本时,文本是否会重新布局(换行、断字、页面跳转)?现在我正在研究 API/live talk to OOo 解决方案,但我不太相信我可以用它做一个强大的东西。
      【解决方案4】:

      如果您可以提取数据(可能是 POI?),那么您可以使用 IText 创建 PDF。

      【讨论】:

      • 谢谢。我想知道我必须在文档格式和 iText 之间缝合的“接缝”的宽度,我在谷歌上找不到任何示例。但总体思路很酷:我认为在 java 中拥有布局引擎是件好事。
      【解决方案5】:

      您可以将 doc 文件转换为 rtf 文件:这些文件使用明确的“标记”来定义样式(如 HTML):例如“{\b bold test}{\i italic test}”。

      因此,该文件对于人类来说是完全“可以理解的”。

      在此文件中,您可以放置​​“标签”,由您选择的字符分隔:例如“%%first_name%%”。

      在java中,您可以用您的信息动态替换这些标签。要完成,您只需将此 rtf 文件转换为 pdf 文件(API、虚拟打印机...)。

      使用此方法,您可以将 rtf 格式替换为任何容易理解的“标记”格式。

      【讨论】:

      • 我一开始就尝试过这种方式,因为出于显而易见的原因,我更喜欢处理二进制格式的文本格式,但是我的文档布局对于 RTF 来说太复杂了。谢谢。
      猜你喜欢
      • 1970-01-01
      • 2011-03-15
      • 2010-10-06
      • 1970-01-01
      • 2010-09-19
      • 2014-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多