2017-11-06 2 views
1

Ich produziere ein Dokument, das automatisch in Umschläge eingewickelt wird.Drucken Sie etwas jede nte Seite

Zu diesem Zweck muss das Dokument alle 5 Seiten und auf der letzten Seite eine Markierung aufweisen.

Das Problem ist, dass AFAIK, XSL nicht auf < fo: page> von FO zur Verfügung gestellt werden kann.

Kann jemand an eine Lösung denken?

+0

Was FO-Prozessor verwenden Sie? –

+0

fop, ich wusste nicht, dass es relevant war, tut mir leid, dass ich es nicht erwähnt habe. Übrigens habe ich eine Lösung gefunden, aber ich bin auf eine bestimmte Anzahl von Seiten beschränkt. Soll ich es posten? –

+0

Sie könnten den von FOP erzeugten Bereichsbaum untersuchen. (Such-OP-Bereichsbaum-Beispiel) Es repräsentiert das zusammengesetzte Zwischenformat. Dies wird Seitenobjekte enthalten und Sie können Ihre Marken injizieren, indem Sie den Bereichsbaum bearbeiten und das Format fortsetzen. –

Antwort

2

Das Beste, was ich tun konnte, erfordert auch, dass Sie genügend Wiederholungen in Ihre fo:page-sequence-master setzen, um die maximale Anzahl der Seiten zu behandeln.

Aus Gründen einen kleineren Screenshot zu machen, stellt dieses Beispiel eine Markierung auf jeder dritten Seite und auf der letzten Seite:

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" 
    xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" 
    font-size="36pt"> 
    <fo:layout-master-set> 
     <fo:simple-page-master master-name="spm" page-width="5in" page-height="5in"> 
      <fo:region-body margin="36pt"/> 
     </fo:simple-page-master> 
     <fo:simple-page-master master-name="marked" page-width="5in" page-height="5in"> 
      <fo:region-body margin="36pt"/> 
      <fo:region-start extent="36pt"/> 
     </fo:simple-page-master> 
     <fo:page-sequence-master master-name="psm"> 
      <fo:repeatable-page-master-alternatives maximum-repeats="2"> 
       <fo:conditional-page-master-reference master-reference="marked" page-position="last"/> 
       <fo:conditional-page-master-reference master-reference="spm"/> 
      </fo:repeatable-page-master-alternatives> 
      <fo:single-page-master-reference master-reference="marked"/> 
      <fo:repeatable-page-master-alternatives maximum-repeats="2"> 
       <fo:conditional-page-master-reference master-reference="marked" page-position="last"/> 
       <fo:conditional-page-master-reference master-reference="spm"/> 
      </fo:repeatable-page-master-alternatives> 
      <fo:single-page-master-reference master-reference="marked"/> 
      <!-- Repeat as often as necessary. --> 
      <fo:repeatable-page-master-alternatives maximum-repeats="2"> 
       <fo:conditional-page-master-reference master-reference="marked" page-position="last"/> 
       <fo:conditional-page-master-reference master-reference="spm"/> 
      </fo:repeatable-page-master-alternatives> 
      <fo:single-page-master-reference master-reference="marked"/> 
     </fo:page-sequence-master> 
    </fo:layout-master-set> 
    <fo:page-sequence master-reference="psm"> 
     <fo:static-content flow-name="xsl-region-start"> 
      <fo:block margin-top="2in"><fo:external-graphic width="100%" src="logo-antenna.svg" content-width="scale-down-to-fit"/></fo:block> 
     </fo:static-content> 
     <fo:flow flow-name="xsl-region-body"> 
      <fo:block break-after="page">1</fo:block> 
      <fo:block break-after="page">2</fo:block> 
      <fo:block break-after="page">3</fo:block> 
      <fo:block break-after="page">4</fo:block> 
      <fo:block>5</fo:block> 
     </fo:flow> 
    </fo:page-sequence> 
</fo:root> 

enter image description here

+0

Das ist sehr nah an meiner Lösung, der einzige Unterschied ist, dass ich eine wiederholbare Seitenfolge für markierte Seiten mit einer maximalen Wiederholung von 1 verwendet habe, weil ich befürchtete, dass diese Seiten hinzugefügt würden, auch wenn sie nicht benötigt würden. Danke für eine nette und saubere Antwort! –