pdf-generation - 使用 CQ5 的 Apache FOP

标签 pdf-generation aem xsl-fo apache-fop

当有 Adob​​e Experience Manager 内置的 pdf 重写器时,我们如何处理具有不同设计的页面。 我知道有一个自动生成pdf的文件page2fo.xsl,我们需要在page2fo.xsl中指定规则。但是我正在工作的网站不仅仅是一种设计,它在不同的国家和不同的语言中都有自己的设计。 在这种情况下,我们如何通过将 url 作为 .pdf 来将 html 转换为 pdf。 我们是否需要为每个设计编写 xsl>? 我们是否有任何机制可以在 Apache FOP 附带的 Adob​​e Experience Manager 中处理这种情况? 如果有任何机制,你能提供它的样本来处理不同的设计吗?

最佳答案

我查看了使用 page2fo.xsl 生成 PDF,甚至就此联系了 Adob​​e 支持。您的所有设计只能有一个文件,因为它在 OSGi 中运行的最终 XSLTTransformer 服务中进行了硬编码。您只能在应用程序下方使用自定义配置覆盖配置“/libs/cq/config/rewriter/pdf”,例如 “/apps/cq/config/rewriter/pdf”,您可以在其中引用与基础页面不同的 page2fo.xsl。为了在您的 XSL 中支持多种设计,我建议使用与您页面的 cq:designPath 相匹配的模板。这里唯一的问题是您需要在每个页面上使用此属性,而不是像在编辑 UI 中那样依赖继承。 沿线的东西:

<xsl:template match="*[contains(@cq:designPath,'/etc/designs/yourdesign')]">
    <xsl:apply-templates select="yourdesign"/>
</xsl:template>

但我可以向您保证,这将是一团糟并且难以维护,因为您实际上只有一个文件用于所有自定义 XSLTTransformation。

我认为在你的情况下我会考虑使用另一个 PDF 框架:

  • PDFBox来自 Apache 。我用它制作了一个 PoC,创建 PDF 很痛苦,因为您需要了解 PDF 语法
  • DynamicPDF :我能够在 2 天内重写我的 PDFBox PoC,甚至添加功能。所以我会推荐它。您可以下载评估版,周围有很多示例。

关于pdf-generation - 使用 CQ5 的 Apache FOP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24415396/

相关文章:

css - 制作 pdf 时无法让 CSS 在 iTextSharp (5.4.3) 中工作

PHP:如何呈现包含图表的 PDF 报告?

asp.net-mvc - Rotativa 和 Bootstrap 网格样式

python - 在脚本中操作和打印到 PDF 文件

url-rewriting - Sling 映射是否可以限制为带有主机 header 的请求

javascript - 如何从 javascript 中的对话框 json 构建 CQ.Dialog?

java - SlingFilter 不捕获异常?

xml - XSLT 转换替换在文档中定期出现的标记

java - 如何对 html 字符串进行 xsl 模板匹配

pdf - 如何使用 XSL-FO 在 PDF 中添加分页符?