当前位置: 首页 > 知识库问答 >
问题:

使用 CQ5 的 Apache FOP

任绪
2023-03-14

当存在内置于Adobe Experience Manager的pdf重写器时,我们如何处理具有不同设计的页面。我知道有一个文件page2fo.xsl自动生成pdf,我们需要在page2fo.xsl中指定规则。但是我正在开发的网站不仅仅是一种设计,它是在不同的国家和不同的语言中,都有自己的设计。在这种情况下,我们如何通过将 url 作为.pdf将 html 转换为 pdf。我们是否需要为每个设计编写 xsl。

共有1个答案

邓子濯
2023-03-14

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

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

但是我可以向你保证,它会很乱,很难维护,因为对于所有的定制XSLTTransformation,你实际上只有这个文件。

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

    < Li > Apache的PDFBox。我用它做了一个概念验证,创建PDF是很痛苦的,因为你需要知道PDF语法 < li>DynamicPDF:我能够在两天内重写我的PDFBox PoC,甚至添加功能。所以我会推荐。您可以下载评估版,这里有很多例子。
 类似资料:
  • 我试图在Adobe CQ5安装中使用servlet-api Version3,但没有成功。 已经有一个导出javax.servlet包(版本2.5)的包,所以我用版本3.1.0部署了一个包。这个包开始正常。 POST/system/console/bundles/250 HTTP/1.1]CQSE-HttpService%bundles.pluginTitle:无法启动(org.osgi.fram

  • 没有CQ/AEM方面的经验,但已陷入困境。 我有一个方法,我们会有一个网络前端(使用Ember.js/handlebars构建)调用一个网络服务,该服务反过来将数据(例如,你看了多少电影)与适当的内容(例如,网络服务知道在CMS中查找节点X;“谢谢你看了所有这些电影!”)并在一个JSON文档中返回副本、图像和数据。 当我对CMS有一个RESTful API时,它的效果非常好。 然而,我现在被要求将

  • 我有一个SQL2查询,用于搜索特定路径的后代节点: 我可以写这个条件,使路径不区分大小写吗?例如,如果我有: 这些节点仍然可以在“/etc/commerce/products/welzijnswinkel/welzijnswinkel/nl/hobby en vrije tijd”下找到。

  • 嗨,我正在使用这段代码为我的CQ5示例应用程序创建一个Post方法。 它可以处理GET请求。但是对于POST(doPost)请求,我重新引用了一条消息:。我应该做些什么来解决这个问题?

  • 我是CQ5的新手,正在学习它。当我试图从蓝图页面推出一个实时副本时;操作是创建、更新、完全更新、部分更新和“无操作”。我想知道用户什么时候得到“无操作”选项。 我从蓝图页面推出了一个实时副本,然后删除了蓝图页面,然后也删除了实时副本页面。之后;如果我再次创建同名的蓝图页面,并尝试将其展开;我得到的是“没有行动”而不是创造。 即使我删除了live copy页面,然后尝试再次推出;它不会将操作显示为“

  • 是否可以在Adobe CQ5/Adobe Experience Manager中使用SQL2、SQL、XPath或QueryBuilder找到同名同级(SN)。我们正在努力准备升级到AEM 6的实例。X和jackrabbit oak已经禁用了对SNS的支持,这使得在不解决这个问题的情况下升级是不可能的。可以递归地遍历存储库,但这太慢了,我正在使用查询寻找更好的选项。SNS的定义如下: 我更喜欢SQ