如何在Apache FOP中设置默认语言

时间:2016-08-18 12:00:53

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

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

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

Image showing language is not set

我已尝试在xml:lang="en"元素中设置fo:root,在第一页序列中或在.xsl文件的第一个元素中设置{没有任何接缝来执行此操作。

任何建议?
 谢谢迪米特里斯。

更新
我已经尝试了另外两个选项,如答案中所建议的,两个都没有工作

  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>
  3. 更新2
    已经开始对这个问题给予赏金。
    任何帮助赞赏和报复

2 个答案:

答案 0 :(得分:1)

您可能需要设置languagehttp://www.w3.org/TR/xsl/#language)。请参阅&#39;语言&#39;在http://xmlgraphics.apache.org/fop/compliance.html

您认为xml:lang会起作用,但您说它不会。 FOP常见问题解答有关于设置language来控制连字符的答案,因此即使将language定义为仅适用于fo:blockfo:character,也值得一试。

您可能需要启用可访问的PDF。请参阅https://xmlgraphics.apache.org/fop/2.1/accessibility.html,其中引用了PDF中设置的语言(包括来自xml:lang)。

答案 1 :(得分:1)

根据我尝试的所有内容,adobe reader显示的文档属性中的语言字段与pdf中实际找到的文档语言没什么关系(它总是空的)。

带有FOP 2.1的fo:root中的xml:lang =“en”标签足以让exiftool将文档列为具有英语语言,并且PDFfbbox中的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 reader中的文档语言属性实际显示的内容,那将会很有趣。