跳至主要內容

页码对象

xsx大约 2 分钟fop模块对象模式页码对象

介绍

说明

本章节将介绍页码对象的基本用法。

特别注意

使用总页码时,需在页面对象与总页码对象中设置相同的页面id,否则将无法准确生成总页码。

创建对象

// 当前页码
CurrentPageNumber currentPageNumber = TemplateHandler.CurrentPageNumber.build();
// 总页码
TotalPageNumber totalPageNumber = TemplateHandler.TotalPageNumber.build();

基本用法

说明

创建一个包含页码的文档

对象模式 java 代码

// 定义输出路径
String outputPath = "E:\\pdf\\test\\fo\\test.pdf";
// 定义页面id
String pageId = "page";
// 创建文档
Document document = TemplateHandler.Document.build();
// 创建页面
Page page = TemplateHandler.Page.build().setFontFamily("微软雅黑");
// 创建当前页码
CurrentPageNumber currentPageNumber = TemplateHandler.CurrentPageNumber.build();
// 创建总页码
TotalPageNumber totalPageNumber = TemplateHandler.TotalPageNumber.build().setPageId(pageId);
// 创建普通文本
Text text1 = TemplateHandler.Text.build().setText("第一页内容");
// 创建普通文本并分页
Text text2 = TemplateHandler.Text.build().setText("第二页内容").setBreakBefore("page");
// 创建容器
BlockContainer container = TemplateHandler.BlockContainer.build();
// 创建当前页码文本
Text currentText = TemplateHandler.Text.build().setText("当前第: ");
// 创建总页码文本
Text totalText = TemplateHandler.Text.build().setText(",共: ");
// 添加容器内组件
container.addComponent(currentText, currentPageNumber, totalText, totalPageNumber);
// 设置id
page.setId(pageId);
// 设置页眉高度并添加页眉组件
page.setHeaderHeight("20pt").addHeaderComponent(container);
// 设置页面主体上边距并添加页面主体组件
page.setBodyMarginTop("20pt").addBodyComponent(text1, text2);
// 添加页面
document.addPage(page);
// 转换pdf
document.transform(outputPath);

xsl-fo 模板

说明

对象模式生成的对应 xsl-fo 模板

<?xml version="1.0" encoding="UTF-8"?><!--根标签-->
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
         xmlns:fox="http://xmlgraphics.apache.org/fop/extensions"
         xmlns:svg="http://www.w3.org/2000/svg"
         xmlns:xe="http://www.x-easypdf.cn/ns">
    <!--页面模板-->
    <fo:layout-master-set>
        <fo:simple-page-master master-name="page1" page-height="29.7cm" page-width="21cm">
            <fo:region-body margin-top="20pt"/>
            <fo:region-before extent="20pt"/>
            <fo:region-after/>
            <fo:region-start/>
            <fo:region-end/>
        </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence font-family="微软雅黑" id="page" master-reference="page1">
        <fo:static-content flow-name="xsl-region-before">
            <fo:block-container>
                <fo:block>
                    <fo:inline>当前第:</fo:inline>
                    <fo:page-number/>
                    <fo:inline>,共:</fo:inline>
                    <fo:page-number-citation-last ref-id="page"/>
                </fo:block>
            </fo:block-container>
        </fo:static-content>
        <fo:flow flow-name="xsl-region-body">
            <fo:block>
                <fo:inline>第一页内容</fo:inline>
            </fo:block>
            <fo:block break-before="page">
                <fo:inline>第二页内容</fo:inline>
            </fo:block>
        </fo:flow>
    </fo:page-sequence>
</fo:root>

pdf 文档效果

生成的pdf文档
生成的pdf文档

可配置项

配置项

  • setPageId:设置页面id