如何在 Apache FOP 中设置默认语言
Posted
技术标签:
【中文标题】如何在 Apache FOP 中设置默认语言【英文标题】:How to set the default language in Apache FOP 【发布时间】:2016-12-25 08:31:18 【问题描述】:我正在使用 Apache FOP 2.1 生成 PDF 文件。
为此,我尝试将默认语言设置为英语。 这应该在创建 PDF 后通过 Adobe Reader 的选项文件/属性/高级/阅读选项进行验证。该值当前为空。
我尝试在fo:root
元素、第一页序列或.xsl
文件的第一个元素中设置xml:lang="en"
... 没有任何接缝可以解决问题。
有什么建议吗? 谢谢迪米特里斯。
更新: 我已经按照答案中的建议尝试了另外 2 个选项,这 2 个都不起作用
<fo:declarations>
<pdf:catalog xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf">
<pdf:string key="Lang">en</pdf:string>
</pdf:catalog>
<x:xmpmeta xmlns:x="adobe:ns:meta/">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:title>the document title</dc:title>
<dc:language>en</dc:language>
更新 2 已经开始在这个问题上悬赏。 任何帮助表示赞赏和奖励
【问题讨论】:
嗯,尝试使用来自***.com/questions/38347687 的答案和我会<fo:declarations><pdf:catalog xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf"><pdf:string key="Lang">en</pdf:string></pdf:catalog>...
的pdf 参考资料(不知道xmlns 中的; 来自哪里)(以及fo 中的xml:lang="en"
:root) 但它也不会在 acrobat 标记中显示语言
然而,在我之前的评论中,该 pdf 文件上的 exiftool 将显示 Language : en
,因此它可以正确地放入文件中。问题可能是 acrobat 属性对话框中的字段引用了不同的内容。另见PDF16: Setting the default language using the /Lang entry in the document catalog of a PDF document
我的猜测是它在 Reader 中不起作用。如果您转到上面的页面:w3.org/TR/WCAG20-TECHS/PDF16.html,然后下载他们引用的确切示例并查看属性,它显示为空白。我还从 FOP、RenderX、Word 中搜索了我的 PDF ......一些标记的,各种类型的。以这种方式查看时,我找不到任何有价值的东西。
您是否有 PDF 样本...任何以任何方式生成的 PDF 都可以显示 Reader 中的语言?如果你这样做了,也许我们可以看看 PDF 看看有什么不同。如果您找不到,那么问题的答案是......“问 Adobe”(虽然对于 *** 作为答案来说这太短了:))
我下载了 Adobe Acrobat Pro,在 您可能需要设置language
(http://www.w3.org/TR/xsl/#language)。参见http://xmlgraphics.apache.org/fop/compliance.html中的“语言”
你认为xml:lang
会起作用,但你说它不起作用。 FOP FAQ 有一个关于设置language
来控制断字的答案,因此即使language
被定义为仅适用于fo:block
和fo:character
,也值得一试。
您可能需要启用可访问的 PDF。请参阅https://xmlgraphics.apache.org/fop/2.1/accessibility.html,其中引用了 PDF 中设置的语言(包括来自xml:lang
)。
【讨论】:
谢谢托尼,这些我已经试过了……它们没有任何影响【参考方案2】:根据我所尝试的一切,adobe reader显示的文档属性中的语言字段与pdf中实际找到的文档语言没有太大关系(它总是空的)。
FOP 2.1 的 fo:root 中的 xml:lang="en" 标记足以让 exiftool 将文档列为具有英语语言,也足以让 pdfbox 中的 PDFDebugger 在文档目录中显示 /Lang 条目,该条目是根据pdf_reference 1.7 表3.25“目录字典中的条目”指定语言的地方。
代码
<fo:declarations>
<pdf:catalog
xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf">
<pdf:string key="Lang">en</pdf:string>
</pdf:catalog>
在 pdf 输出中的作用与 xml:lang 完全相同。
此外,您还可以在元数据中设置语言(也在fo:declarations
中)
<x:xmpmeta
xmlns:x="adobe:ns:meta/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:RDF>
<rdf:Description rdf:about="">
<dc:language><rdf:Bag><rdf:li>en</rdf:li></rdf:Bag></dc:language>
但如果 xml:lang 存在,我的 fop 2.1 似乎设置得太自动了。
因此,如果有人能够解释 adobe 阅读器中的文档语言属性实际显示的内容,那将会很有趣。
【讨论】:
好吧,他们设置文档的语言。您可以提出不同的问题:Adobe Reader 在语言字段中显示的是什么?也许这会吸引那些可以回答的人。或者在 adobe 上查看一些论坛。 让我们看看这里会发生什么Reader Document Property "Language" 我看你也很想知道 - 询问 fop 邮件列表也是个好主意 ;-)以上是关于如何在 Apache FOP 中设置默认语言的主要内容,如果未能解决你的问题,请参考以下文章
如何在ResourceBundleMessageSource中设置默认语言环境?