2016-07-13 3 views
4

Я использую FOP 2.1 и пытаюсь установить ViewerPreferences, например. DisplayDocTitle -> true. неПоддерживает ли FOP 2.1 ViewerPreferences?

Я пытаюсь (от this question

<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) 

и нет ViewerPreferences внутри PDF.

Когда я поставил dictionarys ниже <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?

ответ

2

Согласно release notes ФОП 2.0 введен, среди прочего,

  • Низкий механизм уровня для увеличения PDF /Catalog и /Page словарей

, но не так много примеров его использование на веб-сайте.

Рассматривая 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 ...

(раскрытие: Я разработчик ФОП, хотя и не очень активны в настоящее время)

+1

Отлично, спасибо большое @ifurini! Так что это скорее проблема с документацией.Эффект этих объявлений легко понять - без них читатель acrobat отображает имя файла в строке заголовка, но когда они работают успешно, отображается заголовок документа (задается несколько строк ниже в RDF/dc: title) –

0

В дополнении к @ lfurini отличного нахождению, вот еще некоторые вещи, которые можно сделать, таким образом легко, протестированы с фат 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 (со страницы 139 в этой v1.7 версии, ТАБЛИЦА 3.25 записей в словаре каталога), позаботьтесь о том, чтобы не использовать значения, которые обычно устанавливаются fop, в любом случае, ограничивать себя просмотром/чтением.

Смежные вопросы