2013-11-11 3 views
1

Я делаю преобразование xsl, и я хочу поместить несколько разных документов в один и тот же pdf. У меня есть простые страницы-мастера для первой страницы, последней страницы и других страниц. Мне нужно выяснить способ запуска нового документа, используя последнюю страницу, а затем первую страницу и сбросить номера страниц.Как сбрасывать на первую страницу

<fo:layout-master-set> 
    <fo:simple-page-master master-name="first-page"> 
    <fo:region-body margin-bottom="1in" region-name="main-body"/> 
    <fo:region-after extent="1in" region-name="page-footer" display-align="after"/> 
    </fo:simple-page-master> 
    <fo:simple-page-master master-name="other-pages"> 
    <fo:region-body margin-top=".5in" margin-bottom=".5in" region-name="main-body"/> 
    <fo:region-before extent=".5in" region-name="page-header" display-align="before"/> 
    <fo:region-after extent=".5in" region-name="page-footer" display-align="after"/> 
    </fo:simple-page-master> 
    <fo:simple-page-master master-name="last-page"> 
    <fo:region-body margin-top=".5in" margin-bottom="1in" region-name="main-body"/> 
    <fo:region-before extent=".5in" region-name="page-header" display-align="before"/> 
    <fo:region-after extent="1in" region-name="page-footer" display-align="after"/> 
    </fo:simple-page-master> 
    <fo:page-sequence-master master-name="my-sequence"> 
    <fo:repeatable-page-master-alternatives> 
     <fo:conditional-page-master-reference page-position="first" 
              master-reference="first-page"/> 
     <fo:conditional-page-master-reference page-position="last" 
              master-reference="last-page"/> 
     <fo:conditional-page-master-reference odd-or-even="rest" 
              master-reference="other-pages"/> 
    </fo:repeatable-page-master-alternatives> 
    </fo:page-sequence-master> 
</fo:layout-master-set> 

Я попытался установить начальный номер страницы, но он не позволит мне сделать это внутри страницы. Есть идеи?

Адрес страницы.

<fo:page-sequence master-reference="my-sequence"> 
    <fo:static-content flow-name="page-header" font-style="italic"> 
    <xsl:if test="/Report[string-length(@print-page-headers) = 0 or @print-page-headers != 'false']"> 
     <fo:block> 
     <fo:table width="100%" table-layout="fixed"> 
      <fo:table-column/> 
      <fo:table-column/> 
      <fo:table-body> 
      <fo:table-row line-height="12pt" font-size="10pt"> 
       <fo:table-cell> 
       <fo:block text-align="left"> 
        <xsl:value-of select="/Report/ReportInfo/title "/> 
       </fo:block> 
       </fo:table-cell> 
       <fo:table-cell line-height="12pt" font-size="10pt"> 
       <fo:block text-align="right"> 
        Page <fo:page-number/> of <fo:page-number-citation ref-id="terminator"/> 
       </fo:block> 
       </fo:table-cell> 
      </fo:table-row> 
      </fo:table-body> 
     </fo:table> 
     </fo:block> 
     <fo:block> 
     <fo:leader leader-pattern="rule" rule-thickness="1pt" leader-length="100%"/> 
     </fo:block> 
    </xsl:if> 
    </fo:static-content> 
    <fo:static-content flow-name="page-footer"> 
    <xsl:if test="/Report[string-length(@print-page-footers) = 0 or @print-page-footers != 'false']"> 
     <fo:block > 
     <fo:table width="100%" table-layout="fixed"> 
      <fo:table-column/> 
      <fo:table-body> 
      <fo:table-row height="9in"> 
       <fo:table-cell display-align="after"> 
       <fo:retrieve-marker retrieve-class-name="includes"/> 
       <fo:table width="100%" table-layout="fixed"> 
        <fo:table-column/> 
        <fo:table-column/> 
        <fo:table-column/> 
        <fo:table-body> 
        <fo:table-row> 
         <fo:table-cell text-align="left"> 
         <fo:block font-family="serif" font-size="8pt"> 
          <xsl:value-of select="/Report/reportName"/> 
         </fo:block> 
         </fo:table-cell> 
         <fo:table-cell text-align="center"> 
         <fo:block font-family="serif" font-size="6pt"> 
          <xsl:text></xsl:text> 
         </fo:block> 
         </fo:table-cell> 
         <fo:table-cell text-align="right"> 
         <fo:block font-family="serif" font-size="8pt"> 
          <xsl:value-of select="/Report/ReportInfo/date"/> 
         </fo:block> 
         </fo:table-cell> 
        </fo:table-row> 
        <fo:table-row> 
         <fo:table-cell number-columns-spanned="3" text-align="center"> 
         <fo:block font-family="serif" font-size="6pt"> 
          <xsl:text></xsl:text> 
         </fo:block> 
         </fo:table-cell> 
        </fo:table-row> 
        </fo:table-body> 
       </fo:table> 
       </fo:table-cell> 
      </fo:table-row> 
      </fo:table-body> 
     </fo:table> 
     </fo:block> 
    </xsl:if> 
    </fo:static-content> 
    <fo:flow flow-name="main-body"> 
    <fo:block hyphenate="true" language="en"> 
     <xsl:apply-templates/> 
    </fo:block> 
    <fo:block id="terminator"/> 
    </fo:flow> 
</fo:page-sequence> 

Я попытался с помощью шаблона, чтобы сбросить начальный номер страницы:

<xsl:template match="newreport"> 
    <fo:page-sequence initial-page-number="1" master-reference="my-sequence"> 
    <fo:static-content flow-name="page-header" font-style="italic"> 
     <fo:block break-before="page"/> 
     <fo:block> 
     <fo:table width="100%" table-layout="fixed"> 
      <fo:table-column/> 
      <fo:table-column/> 
      <fo:table-body> 
      <fo:table-row line-height="12pt" font-size="10pt"> 
       <fo:table-cell> 
       <fo:block text-align="left"> 
        <xsl:value-of select="/Report/ReportInfo/title "/> 
       </fo:block> 
       </fo:table-cell> 
       <fo:table-cell line-height="12pt" font-size="10pt"> 
       <fo:block text-align="right"> 
        Page <fo:page-number/> of <fo:page-number-citation ref-id="terminator"/> 
       </fo:block> 
       </fo:table-cell> 
      </fo:table-row> 
      </fo:table-body> 
     </fo:table> 
     </fo:block> 
     <fo:block> 
     <fo:leader leader-pattern="rule" rule-thickness="1pt" leader-length="100%"/> 
     </fo:block> 
    </fo:static-content> 
    </fo:page-sequence> 
</xsl:template> 

Это не работает. Я скопировал код из первой последовательности страниц. Я хочу, чтобы иметь возможность сбросить на первую страницу и сделать заголовок страницы и т. Д.

+1

Вы пытались установить его где? Вы показываете только часть XSL, которую никто не может использовать, чтобы ответить на ваш вопрос, извините. Вам нужно показать в своем XSL, как вы выбрасываете последовательности страниц, и именно там вы устанавливаете начальный номер страницы (а также, возможно, заставляете подсчет страниц). Чтобы ответить на ваш вопрос, вам нужно включить XSL, используемый для создания страниц, а не только шаблоны страниц. –

+0

Извините. Вот последовательность страниц. – llihttocs

ответ

1

Возможно, вы хотите адаптировать этот образец к своему, это отлично подходит для ссылок на страницы X Y в многократном пакетном документе. Один из ключевых моментов заключается в том, что вы должны использовать уникальную ссылку на документ «chunk». Вы бы использовали что-то уникальное в XML, но я нахожу его столь же простым в использовании generate-id (.) В повторяющемся документе, добавляя этот id в fo: flow, а затем используя fo: page-number-citation-last с это id. Таким образом, вы получаете последнюю страницу каждого из потоков.

вход

Пример:

<batch> 
     <document> 
      <page/> 
      <page/> 
      <page/> 
      <page/> 
      <page/> 
     </document> 
     <document> 
      <page/> 
      <page/> 
      <page/> 
     </document> 
     <document> 
      <page/> 
      <page/> 
      <page/> 
     </document> 
    </batch> 

Пример XSL:

<xsl:stylesheet version="1.0" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
     <xsl:output method="xml" indent="yes"/> 
     <xsl:template match="/"> 
      <fo:root> 
       <fo:layout-master-set> 
        <fo:simple-page-master master-name="pages"> 
         <fo:region-body margin-top="1in"/> 
         <fo:region-before extent="0.5in"/> 
        </fo:simple-page-master> 
       </fo:layout-master-set> 
       <xsl:apply-templates/> 
      </fo:root> 
     </xsl:template> 
     <xsl:template match="document"> 
       <fo:page-sequence master-reference="pages" initial-page-number="1" force-page-count="no-force"> 
        <fo:static-content flow-name="xsl-region-before"> 
         <fo:block> 
          Page <fo:page-number/> of <fo:page-number-citation-last ref-id="{generate-id(.)}"/> 
         </fo:block> 
        </fo:static-content> 
        <fo:flow flow-name="xsl-region-body" id="{generate-id(.)}"> 
         <xsl:apply-templates/> 
        </fo:flow> 
       </fo:page-sequence> 
     </xsl:template> 
     <xsl:template match="page"> 
      <fo:block break-before="page"> 
       I am a page 
      </fo:block> 
     </xsl:template> 
    </xsl:stylesheet> 

Выходные данные показывают, 1 из 5, 2 из 5, 3 из 5 ... с последующим 1 из 3, 2 из 3 ... работает отлично.

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