将封面插入 XSL:FO 模板
Inserting a cover page into XSL:FO template
我处理过这些文档,我需要编辑现有代码才能映射数据库中的字段。 XSL 文档已经有了模板和区域。我的目标是在模板的任何边距出现之前添加一个封面。
代码如下所示:
<fo:layout-master-set>
<fo:simple-page-master master-name="Letter Page" page-width="8.3in" page-height="11.7in"
margin-top="0px" margin-bottom="0px" margin-right="0px" margin-left="0px">
<fo:region-body region-name="xsl-region-body"
padding-top="0px" padding-bottom="0px" padding-left="0px" padding-right="0px"
margin-top="4.250cm" margin-bottom="2.750cm" margin-left="1.8cm" margin-right="1.8cm"
border-style="none" border-width="0px" border-color="" background="" background-repeat="no-repeat" background-position-horizontal="0px" background-position-vertical="0px"
extent="0px" column-gap="0px" column-count="1" reference-orientation="0"/>
<fo:region-before region-name="xsl-region-before"
display-align="after" extent="3.8cm"
padding-top="0px" padding-bottom="0px" padding-left="0px" padding-right="0px"
border-style="none" border-width="0px" border-color="" background="" background-repeat="no-repeat" background-position-horizontal="0px" background-position-vertical="0px" reference-orientation="0"/>
<fo:region-after region-name="xsl-region-after"
display-align="before" extent="2.750cm"
padding-top="0px" padding-bottom="0px" padding-left="0px" padding-right="0px"
border-style="none" border-width="0px" border-color="" background="" background-repeat="no-repeat" background-position-horizontal="0px" background-position-vertical="0px" reference-orientation="0"/>
<fo:region-start region-name="xsl-region-start"
extent="1.8cm"
padding-top="0px" padding-bottom="0px" padding-left="0px" padding-right="0px"
border-style="none" border-width="0px" border-color="" background="" background-repeat="no-repeat" background-position-horizontal="0px" background-position-vertical="0px" reference-orientation="0"/>
<fo:region-end region-name="xsl-region-end"
extent="1.8cm"
padding-top="0px" padding-bottom="0px" padding-left="0px" padding-right="0px"
border-style="none" border-width="0px" border-color="" background="" background-repeat="no-repeat" background-position-horizontal="0px" background-position-vertical="0px" reference-orientation="0"/>
</fo:simple-page-master>
</fo:layout-master-set>
然后页面开始为
<fo:page-sequence master-reference="Letter Page">
<fo:static-content flow-name="xsl-region-before" font-size="8pt" font-family="Arial">
紧随其后的是任何其他地区等。我查看了如何插入一些封面,但尝试时总是出现错误,我使用的只是记事本++,每次测试时都会渲染 pdf,所以它变得非常耗时的过程。我决定只用一张图片作为封面以节省时间。我知道这是一个 FOP 引擎 1.0。
我相信你想尝试的是为你的封面定义一个新的 simple-page-master ,如果你不担心边距等,你只需要给出 region-body 定义,并且那么您想查看您拥有的页面序列。在 fo 中,页面顺序正是它听起来的样子,它是您插入各种页面的顺序。如果您也查看 this example, you can see how page-sequences are defined and how you can programmatically control which pages you render and the order to do so in. If you want a more intricate or complex example, you could look at this。
如果您正在寻找有关如何将此应用到现有模板的更详细说明,那么有关您的模板当前功能的更多详细信息可能会有所帮助。
这里有一个简单的例子可以帮助您完成整个过程:
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master page-width="8.5in" page-height="11in" master-name="Cover">
<fo:region-body margin-top="0pt" background-color="red"/>
<fo:region-before extent="0pt"/>
<fo:region-after extent="0pt"/>
</fo:simple-page-master>
<fo:simple-page-master margin-top="1in" margin-left="1in"
margin-bottom="18pt" margin-right="18pt"
page-width="8.5in" page-height="11in" master-name="Pages">
<fo:region-body margin-top="0pt"/>
<fo:region-before extent="0pt"/>
<fo:region-after extent="0pt"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="Cover">
<fo:flow flow-name="xsl-region-body">
<fo:block text-align="center">
I am a Cover Page, format me however you wish!
</fo:block>
</fo:flow>
</fo:page-sequence>
<fo:page-sequence master-reference="Pages">
<fo:flow flow-name="xsl-region-body">
<fo:block>
I am the rest of the text in the "Pages" page-sequence.
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
"Cover" 页面序列可以包含任何你想要的内容(我放了一些文本并将其设为红色),"Pages" 页面序列包含其余内容。
这会产生一个像这样的两页文档:
我处理过这些文档,我需要编辑现有代码才能映射数据库中的字段。 XSL 文档已经有了模板和区域。我的目标是在模板的任何边距出现之前添加一个封面。
代码如下所示:
<fo:layout-master-set>
<fo:simple-page-master master-name="Letter Page" page-width="8.3in" page-height="11.7in"
margin-top="0px" margin-bottom="0px" margin-right="0px" margin-left="0px">
<fo:region-body region-name="xsl-region-body"
padding-top="0px" padding-bottom="0px" padding-left="0px" padding-right="0px"
margin-top="4.250cm" margin-bottom="2.750cm" margin-left="1.8cm" margin-right="1.8cm"
border-style="none" border-width="0px" border-color="" background="" background-repeat="no-repeat" background-position-horizontal="0px" background-position-vertical="0px"
extent="0px" column-gap="0px" column-count="1" reference-orientation="0"/>
<fo:region-before region-name="xsl-region-before"
display-align="after" extent="3.8cm"
padding-top="0px" padding-bottom="0px" padding-left="0px" padding-right="0px"
border-style="none" border-width="0px" border-color="" background="" background-repeat="no-repeat" background-position-horizontal="0px" background-position-vertical="0px" reference-orientation="0"/>
<fo:region-after region-name="xsl-region-after"
display-align="before" extent="2.750cm"
padding-top="0px" padding-bottom="0px" padding-left="0px" padding-right="0px"
border-style="none" border-width="0px" border-color="" background="" background-repeat="no-repeat" background-position-horizontal="0px" background-position-vertical="0px" reference-orientation="0"/>
<fo:region-start region-name="xsl-region-start"
extent="1.8cm"
padding-top="0px" padding-bottom="0px" padding-left="0px" padding-right="0px"
border-style="none" border-width="0px" border-color="" background="" background-repeat="no-repeat" background-position-horizontal="0px" background-position-vertical="0px" reference-orientation="0"/>
<fo:region-end region-name="xsl-region-end"
extent="1.8cm"
padding-top="0px" padding-bottom="0px" padding-left="0px" padding-right="0px"
border-style="none" border-width="0px" border-color="" background="" background-repeat="no-repeat" background-position-horizontal="0px" background-position-vertical="0px" reference-orientation="0"/>
</fo:simple-page-master>
</fo:layout-master-set>
然后页面开始为
<fo:page-sequence master-reference="Letter Page">
<fo:static-content flow-name="xsl-region-before" font-size="8pt" font-family="Arial">
紧随其后的是任何其他地区等。我查看了如何插入一些封面,但尝试时总是出现错误,我使用的只是记事本++,每次测试时都会渲染 pdf,所以它变得非常耗时的过程。我决定只用一张图片作为封面以节省时间。我知道这是一个 FOP 引擎 1.0。
我相信你想尝试的是为你的封面定义一个新的 simple-page-master ,如果你不担心边距等,你只需要给出 region-body 定义,并且那么您想查看您拥有的页面序列。在 fo 中,页面顺序正是它听起来的样子,它是您插入各种页面的顺序。如果您也查看 this example, you can see how page-sequences are defined and how you can programmatically control which pages you render and the order to do so in. If you want a more intricate or complex example, you could look at this。
如果您正在寻找有关如何将此应用到现有模板的更详细说明,那么有关您的模板当前功能的更多详细信息可能会有所帮助。
这里有一个简单的例子可以帮助您完成整个过程:
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master page-width="8.5in" page-height="11in" master-name="Cover">
<fo:region-body margin-top="0pt" background-color="red"/>
<fo:region-before extent="0pt"/>
<fo:region-after extent="0pt"/>
</fo:simple-page-master>
<fo:simple-page-master margin-top="1in" margin-left="1in"
margin-bottom="18pt" margin-right="18pt"
page-width="8.5in" page-height="11in" master-name="Pages">
<fo:region-body margin-top="0pt"/>
<fo:region-before extent="0pt"/>
<fo:region-after extent="0pt"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="Cover">
<fo:flow flow-name="xsl-region-body">
<fo:block text-align="center">
I am a Cover Page, format me however you wish!
</fo:block>
</fo:flow>
</fo:page-sequence>
<fo:page-sequence master-reference="Pages">
<fo:flow flow-name="xsl-region-body">
<fo:block>
I am the rest of the text in the "Pages" page-sequence.
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
"Cover" 页面序列可以包含任何你想要的内容(我放了一些文本并将其设为红色),"Pages" 页面序列包含其余内容。
这会产生一个像这样的两页文档: