FOP 2.1 是否支持 ViewerPreferences?
Does FOP 2.1 support ViewerPreferences?
我正在使用 FOP 2.1 并尝试设置 ViewerPreferences,例如DisplayDocTitle -> 真。
我正在尝试(来自
<fo:declarations>
<pdf:dictionary type="Catalog" xmlns:pdf="http://xmlgraphics.apache/org/fop/extensions/pdf">
<pdf:dictionary type="normal" key="ViewerPreferences">
<pdf:entry key="DisplayDocTitle" type="boolean">true</pdf:entry>
</pdf:dictionary>
</pdf:dictionary>
<x:xmpmeta xmlns:x="adobe:ns:meta/">
...
但得到
Jul 13, 2016 11:18:31 AM org.apache.fop.events.LoggingEventListener processEvent
WARNING: Unknown formatting object "{http://xmlgraphics.apache/org/fop/extensions/pdf}dictionary" encountered (a child of fo:declarations}. (See position 242:105)
Jul 13, 2016 11:18:31 AM org.apache.fop.events.LoggingEventListener processEvent
WARNING: Unknown formatting object "{http://xmlgraphics.apache/org/fop/extensions/pdf}dictionary" encountered (a child of dictionary}. (See position 243:69)
pdf 中没有 ViewerPreferences。
当我将字典放在 <x:xmpmeta xmlns:x="adobe:ns:meta/">
下面时,我也没有 ViewerPreferences,只有 pdfbox 预检会抱怨
The file test.pdf is not valid, error(s) :
7.3 : Error on MetaData, Cannot find a definition for the namespace http://xmlgraphics.apache/org/fop/extensions/pdf
我做错了什么,我是不是太早尝试了?我必须在哪里修补 fop?
根据 release notes FOP 2.0 介绍,除其他外,
- Low level mechanism to augment PDF
/Catalog
and /Page
dictionaries
但是网站上的使用例子并不多
查看源代码分发中包含的 testcases,特别是名为 pdf-dictionary-extension_*.xml
的那些,我能够将与您的代码类似的东西放在一起,但不会生成 运行 - 时间例外;诚然,我对这个 PDF 功能还不够熟悉,无法说明输出是否真正实现了您想要做的事情:
<fo:declarations>
<pdf:catalog xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf">
<pdf:dictionary type="normal" key="ViewerPreferences">
<pdf:boolean key="DisplayDocTitle">true</pdf:boolean>
</pdf:dictionary>
</pdf:catalog>
</fo:declarations>
- 没有
<pdf:dictionary type="Catalog">
,有pdf:catalog
代替
- 没有单个
<pdf:entry key="..." type="...">
元素,但每个可能的条目类型都有一个特定元素:pdf:array
、pdf:boolean
、pdf:name
、pdf:number
, pdf:string
, ...
(披露:我是一名 FOP 开发人员,虽然现在不是很活跃)
作为对@lfurini 出色发现的补充,这里还有一些可以轻松完成的事情,使用 fop 2.1 进行了测试,但也可以从 2.0: 开始,删除相关部分的评论以尝试:
<fo:declarations>
<pdf:catalog xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf">
<!-- this opens in full-screen mode, e.g. as presentation -->
<!-- pdf:name key="PageMode">FullScreen</pdf:name -->
<!-- this opens then second page so it is fully visible -->
<!-- (count seems to start at 0) -->
<!-- pdf:array key="OpenAction">
<pdf:number>1</pdf:number>
<pdf:name>Fit</pdf:name>
</pdf:array -->
<!-- this will replace the window title from filename to below dc:title -->
<pdf:dictionary type="normal" key="ViewerPreferences">
<pdf:boolean key="DisplayDocTitle">true</pdf:boolean>
</pdf:dictionary>
</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/">
<!-- Dublin Core properties go here -->
<dc:title>Sample Document title</dc:title>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
</fo:declarations>
可能取值的详细信息可以在pdf specification中查找(从v1.7版本的第139页开始,TABLE目录字典中的3.25条目),注意不要使用值无论如何通常都会由 fop 设置,限制自己使用 viewer/reader 相关内容。
我正在使用 FOP 2.1 并尝试设置 ViewerPreferences,例如DisplayDocTitle -> 真。
我正在尝试(来自
<fo:declarations>
<pdf:dictionary type="Catalog" xmlns:pdf="http://xmlgraphics.apache/org/fop/extensions/pdf">
<pdf:dictionary type="normal" key="ViewerPreferences">
<pdf:entry key="DisplayDocTitle" type="boolean">true</pdf:entry>
</pdf:dictionary>
</pdf:dictionary>
<x:xmpmeta xmlns:x="adobe:ns:meta/">
...
但得到
Jul 13, 2016 11:18:31 AM org.apache.fop.events.LoggingEventListener processEvent
WARNING: Unknown formatting object "{http://xmlgraphics.apache/org/fop/extensions/pdf}dictionary" encountered (a child of fo:declarations}. (See position 242:105)
Jul 13, 2016 11:18:31 AM org.apache.fop.events.LoggingEventListener processEvent
WARNING: Unknown formatting object "{http://xmlgraphics.apache/org/fop/extensions/pdf}dictionary" encountered (a child of dictionary}. (See position 243:69)
pdf 中没有 ViewerPreferences。
当我将字典放在 <x:xmpmeta xmlns:x="adobe:ns:meta/">
下面时,我也没有 ViewerPreferences,只有 pdfbox 预检会抱怨
The file test.pdf is not valid, error(s) :
7.3 : Error on MetaData, Cannot find a definition for the namespace http://xmlgraphics.apache/org/fop/extensions/pdf
我做错了什么,我是不是太早尝试了?我必须在哪里修补 fop?
根据 release notes FOP 2.0 介绍,除其他外,
- Low level mechanism to augment PDF
/Catalog
and/Page
dictionaries
但是网站上的使用例子并不多
查看源代码分发中包含的 testcases,特别是名为 pdf-dictionary-extension_*.xml
的那些,我能够将与您的代码类似的东西放在一起,但不会生成 运行 - 时间例外;诚然,我对这个 PDF 功能还不够熟悉,无法说明输出是否真正实现了您想要做的事情:
<fo:declarations>
<pdf:catalog xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf">
<pdf:dictionary type="normal" key="ViewerPreferences">
<pdf:boolean key="DisplayDocTitle">true</pdf:boolean>
</pdf:dictionary>
</pdf:catalog>
</fo:declarations>
- 没有
<pdf:dictionary type="Catalog">
,有pdf:catalog
代替 - 没有单个
<pdf:entry key="..." type="...">
元素,但每个可能的条目类型都有一个特定元素:pdf:array
、pdf:boolean
、pdf:name
、pdf:number
,pdf:string
, ...
(披露:我是一名 FOP 开发人员,虽然现在不是很活跃)
作为对@lfurini 出色发现的补充,这里还有一些可以轻松完成的事情,使用 fop 2.1 进行了测试,但也可以从 2.0: 开始,删除相关部分的评论以尝试:
<fo:declarations>
<pdf:catalog xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf">
<!-- this opens in full-screen mode, e.g. as presentation -->
<!-- pdf:name key="PageMode">FullScreen</pdf:name -->
<!-- this opens then second page so it is fully visible -->
<!-- (count seems to start at 0) -->
<!-- pdf:array key="OpenAction">
<pdf:number>1</pdf:number>
<pdf:name>Fit</pdf:name>
</pdf:array -->
<!-- this will replace the window title from filename to below dc:title -->
<pdf:dictionary type="normal" key="ViewerPreferences">
<pdf:boolean key="DisplayDocTitle">true</pdf:boolean>
</pdf:dictionary>
</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/">
<!-- Dublin Core properties go here -->
<dc:title>Sample Document title</dc:title>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
</fo:declarations>
可能取值的详细信息可以在pdf specification中查找(从v1.7版本的第139页开始,TABLE目录字典中的3.25条目),注意不要使用值无论如何通常都会由 fop 设置,限制自己使用 viewer/reader 相关内容。