0

考虑一个由页眉、详细信息顶部、详细信息底部和页脚组成的报告页面。我有一项将运行“应用程序”的服务。此应用程序将生成最终将出现在报告的详细底部部分中的内容。它将其输出存储在文件系统中。在 App 产生输出(和关闭)后,单独的“服务”将产生最终报告“合并”由 App 产生的内容(服务提供页眉、页脚和细节顶部区域的内容)。如果我在 Word 中手动生成此文件,我实质上是将 Word 文档作为对象插入到最终报告文档中。

我正在尝试确定一种合适的技术来实现这一目标。

要求包括:

  1. 生成最终报告的服务将是在 Linux 机器上运行的 Java 服务。我将开发此代码。
  2. 产生详细底部内容的应用程序可以是Windows(例如,C#)或Linux(例如,Java)应用程序。任何数量的其他开发人员都将开发此代码并通过我将提供的 SDK 与我的服务进行交互。他们被认为是熟练的开发人员,但我不知道他们对任何报告生成技术有什么经验
  3. 服务使用的模板将为完成的报告提供相同的外观和感觉,而不管运行的应用程序如何,而应用程序将完全控制完成报告的详细底部部分的内容。换句话说,如果模板在完成的报告中为详细信息底部部分分配了一个 7Wx5H 的“框架”,则应用程序本质上将有一个 7x5W 的空白页可供使用。
  4. 完成的报告可能是多页,第一页可能与其余页不同。如果 App 生成多个(例如,7Hx5W 页面),则服务会将每个 App 页面合并到已完成报告的每个页面的 detail-bottom 部分,从而让 App 处理分页,就像它正在生成整个报告一样报告自己。
  5. 在某些时候,我想为最终用户提供一个 UI 来管理完成的报告(模板)的布局。
  6. 我并不真正关心应用程序开发人员如何生成要插入到细节底部框架中的内容,并且由于他为我提供了一个完成的可执行文件供我运行,我不会为他提供任何 UI 来管理他的报告布局/内容
  7. 交付给最终用户的完成报告将以 PDF 格式。
  8. 由于我不确定应用程序开发人员的技能组合,并且可能有许多应用程序和开发人员,我希望他们产生我可以接受的输出,以便合并到 dertail-bottom 框架中,并且得到很好的接受、支持且不会过于繁琐使用。

迄今为止向我推荐的各种技术是:

  1. 阿帕奇 FOP (XML-FO)
  2. DOCX
  3. 文本
4

2 回答 2

1

这是使用 FOP 的解决方案:

  • 让应用程序将各自的数据保存到两个具有固定名称的 XML 文件中。因此,您的 API 将是数据生产者必须遵守的 XML 文档模式。

  • 提供一个包含完整 PDF 布局的 XSL 文件,并使用 document() xsl 函数读回这两个文件。

  • 要同时处理多个报告,请为每个报告使用一个目录。

  • FOP 将负责分页。

如果您希望最终用户可以配置布局,您可以让他们以应用程序定义的方式更改 xsl。您还可以将 XSL 拆分为几个部分(用于第一个报告、第二个报告、整体布局)并将它们全部导入一个主模板。

于 2012-12-09T08:49:18.383 回答
0

如果最终输出是可以精确控制外观的 PDF,为什么不让生成底部框架的应用程序也生成可以精确控制外观的 PDF?

PDF 支持的一项功能是“Form XObject”,它允许将一个 PDF 中的内容包含到另一个 PDF 中。您甚至可以从页面中取出特定的矩形,这样您就可以允许应用程序创建它想要的任何大小的 PDF,并指定包含内容的矩形。

必须有支持 Form XObjects 的 Java 库,因为这并不难。我编写了一个 Python 库名称pdfrw,它允许您以这种方式非常轻松地合并页面。我还没有把它记录得那么好,但是那个网站上有几个例子,这里有一个非常相关的例子

于 2015-08-01T14:26:47.370 回答