2017-11-06 21 views
1

封筒に自動的に折り返される文書を作成しています。n番目のページごとに何かを印刷する

この目的のために、文書には5ページごとと最後のページのマーカーが必要です。

問題はAFAIK、XSLがFOによって提供された< fo:page>に依存できないことです。

誰も解決策を考えることはできますか?

+0

あなたは何FOプロセッサを使用していますか? –

+0

fop、私はそれがそれを言及して申し訳ありません関連性が分かっていませんでした。ところで、私は解決策を見つけましたが、私は任意の与えられた数のページに限られています。投稿する必要がありますか? –

+0

FOPから1つ作成された領域ツリーを調べることができます。 (検索OPエリアツリーサンプル)合成された中間形式を表します。これにはページオブジェクトが含まれ、領域ツリーを操作してフォーマットを続行することでマークを挿入できます。 –

答えて

2

私ができることは、最大ページ数を処理するために十分な繰り返しをfo:page-sequence-masterに入れておくことが必要です。

小さなスクリーンショットを作るのために、この例では、すべての3ページ目にして最後のページにマークを置く:

<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

これは私のソリューションに非常に近いですが、違いは、マークされたページに対して繰り返し可能なページシーケンスを使用し、最大反復回数が1であることです。すてきで清潔な答えをありがとう! –

関連する問題