【问题标题】:How to set the default language in Apache FOP如何在 Apache FOP 中设置默认语言
【发布时间】:2016-12-25 08:31:18
【问题描述】:

我正在使用 Apache FOP 2.1 生成 PDF 文件。

为此,我尝试将默认语言设置为英语。
这应该在创建 PDF 后通过 Adob​​e Reader 的选项文件/属性/高级/阅读选项进行验证。该值当前为空。

我尝试在fo:root 元素、第一页序列或.xsl 文件的第一个元素中设置xml:lang="en"... 没有任何接缝可以解决问题。

有什么建议吗?
谢谢迪米特里斯。

更新:
我已经按照答案中的建议尝试了另外 2 个选项,这 2 个都不起作用

  1. <fo:declarations> <pdf:catalog xmlns:pdf="http://xmlgraphics.apache.org/fop/‌extensions/pdf"> <pdf:string key="Lang">en</pdf:string> </pdf:catalog>
  2. <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
已经开始在这个问题上悬赏。
任何帮助表示赞赏和奖励

【问题讨论】:

  • 嗯,尝试使用来自stackoverflow.com/questions/38347687 的答案和我会&lt;fo:declarations&gt;&lt;pdf:catalog xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf"&gt;&lt;pdf:string key="Lang"&gt;en&lt;/pdf:string&gt;&lt;/pdf:catalog&gt;... 的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 看看有什么不同。如果您找不到,那么问题的答案是......“问 Adob​​e”(虽然对于 Stackoverflow 作为答案来说这太短了:))
  • 我下载了 Adob​​e Acrobat Pro,在 xml:lang="en" 中设置时会显示在 Pro 的属性中,但在 Adob​​e Reader(免费版)中不显示。看起来像一个限制/错误

标签: xml apache xslt xsl-fo apache-fop


【解决方案1】:

您可能需要设置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 邮件列表也是个好主意 ;-)
猜你喜欢
  • 1970-01-01
  • 2022-06-23
  • 2014-09-14
  • 2012-02-07
  • 2021-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多