2016-07-13 7 views
4

Ich benutze FOP 2.1 und versuche, ViewerPreferences, z. DisplayDocTitle -> Wahr.Unterstützt FOP 2.1 ViewerPreferences?

Ich versuche (von 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/"> 
    ... 

aber

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) 

und keine ViewerPreferences innerhalb des pdf bekommen.

Als ich die Dictionarys unter dem <x:xmpmeta xmlns:x="adobe:ns:meta/"> setzen dann bekomme ich keine ViewerPreferences entweder, nur pdfbox preflight wird sich dann über

beschweren
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 

Was mache ich falsch, bin ich zu früh, um es zu versuchen? Wo muss ich foppen?

Antwort

2

Nach dem release notes FOP 2.0 eingeführt, unter anderem ein

  • Low-Level-Mechanismus PDF /Catalog und /Page Wörterbücher

zu vermehren, aber es gibt nicht viele Beispiele seine Verwendung in der Website.

Mit Blick auf die testcases in der Quelldistribution enthalten, insbesondere die namens pdf-dictionary-extension_*.xml, konnte ich etwas ähnlich Ihrem Code zusammenstellen, die Laufzeitausnahmen nicht generiert; Zugegeben, ich bin genug mit diesem PDF-Funktion nicht vertraut zu sagen, ob die Ausgabe tatsächlich erreicht, was Sie zu tun versuchen:

<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> 
  • kein <pdf:dictionary type="Catalog"> ist, gibt es pdf:catalog statt
  • gibt es nicht ein einzelne <pdf:entry key="..." type="..."> Element, aber es gibt ein bestimmtes Element für jeden möglichen Eingabetyp: pdf:array, pdf:boolean, pdf:name, pdf:number, pdf:string, ...

(Offenlegung: Ich bin ein FOP Entwickler, obwohl heutzutage nicht sehr aktiv)

+1

Ausgezeichnet, vielen Dank @ifurini! Es ist also eher eine Dokumentationsproblematik.Die Wirkung dieser Deklarationen ist leicht zu erkennen - ohne sie zeigt der acrobat reader den Dateinamen in der Titelleiste an, aber wenn sie erfolgreich arbeiten, wird der Titel des Dokuments (in RDF/dc: title) angezeigt –

0

Als Ergänzung zu @ lfurini ausgezeichneten Erkenntnis, hier sind einige weitere Sache, die leicht auf diese Weise getan werden kann, getestet mit Geck 2.1, könnte aber auch von 2.0 arbeiten :, entfernen Sie die Kommentare aus den entsprechenden Abschnitten versuchen:

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

Einzelheiten der möglichen Werte in den pdf specification nachgeschlagen werden (ab Seite 139 in dieser v1.7 Version, Tabelle 3.25 Einträge im Katalogwörterbuch), achten Sie darauf, keine Werte zu verwenden, die normalerweise von fop gesetzt würden, beschränken Sie sich auf Betrachter/Leser-relevante Dinge.