Skip to content
Demo示例API 参考文档FAQ

PDF 生成模板编辑器

开源可视化 PDF 生成引擎,支持自定义模板,并提供面向开发者的 API,灵活构建文档生成流程。

查看 GitHub

页眉与页脚 ​

通过 CHtmlHeaderFooterOptions 和 setHeaderFooterOptions(),可在每页上、下边距区域渲染独立的 HTML 模板。将 displayHeaderFooter 设为 true,并为模板预留足够的上下边距。模板宽度或高度超出可用区域时,转换会失败;应增加边距或缩小模板。

下面的示例将第一个实际页面作为封面:隐藏封面的页眉页脚,并从第二个实际页面开始编号为 1。

java
import CPDFGeneration.CConverterProperties;
import CPDFGeneration.CHtmlConverter;
import CPDFGeneration.CHtmlHeaderFooterOptions;

CConverterProperties properties = new CConverterProperties();
try {
    properties.setPageMargins(48, 40, 48, 40);
    CHtmlHeaderFooterOptions options = new CHtmlHeaderFooterOptions();
    options.displayHeaderFooter = true;
    options.headerTemplate = "<div style='font-size:10px'>"
            + "<span class='title'></span></div>";
    options.footerTemplate = "<div style='font-size:10px;text-align:right'>"
            + "<span class='date'></span> | "
            + "<span class='pageNumber'></span>/<span class='totalPages'></span></div>";
    options.title = "Report";
    options.skipLeadingTemplatePages = 1;
    options.skipLeadingNumberedPages = 1;
    properties.setHeaderFooterOptions(options);

    CHtmlHeaderFooterOptions saved = properties.getHeaderFooterOptions();
    System.out.println("Headers/footers enabled: " + saved.displayHeaderFooter);
    CHtmlConverter.CErrorCode status = CHtmlConverter.ConvertToPdf(
            "input.html", "header-footer.pdf", properties);
    if (status != CHtmlConverter.CErrorCode.HTML_CONVERTER_SUCCESS) {
        throw new IllegalStateException("HTML conversion failed: " + status);
    }
} finally {
    properties.release();
}
字段默认值说明
displayHeaderFooterfalse是否启用页眉页脚。
headerTemplate空字符串页眉 HTML;空字符串使用默认页眉模板。
footerTemplate空字符串页脚 HTML;空字符串使用默认页脚模板。
baseUri空字符串模板资源的基础 URI;为空时使用正文资源目录。
title空字符串显示的标题;为空时使用正文的 HTML 标题。
url空字符串显示的 URL;转换没有来源 URL 的 HTML 时,应由调用方提供。
date空字符串显示的日期;为空时使用本次转换的本地日期和时间。
skipLeadingTemplatePages0隐藏前 N 个实际页面的模板,不改变编号。
skipLeadingNumberedPages0前 N 个实际页面不计入编号且不显示模板,后续页面从 1 开始编号。

两个跳页数必须为非负数。同时设置时,前 max(skipLeadingTemplatePages, skipLeadingNumberedPages) 个实际页面不显示模板;编号只由 skipLeadingNumberedPages 决定。

模板支持通过 CSS 类名 date、title、url、pageNumber 和 totalPages 填充动态内容,例如 <span class='pageNumber'></span>。页码还支持文本占位符 和 。totalPages 不包含 skipLeadingNumberedPages 跳过的页面。

模板为空字符串时使用内置模板。需要明确留空某一项时,使用 <div></div>。模板支持的 HTML/CSS 以渲染器能力为准,不执行 JavaScript。

setHeaderFooterOptions() 会复制配置;之后修改传入对象不会改变属性。getHeaderFooterOptions() 返回独立副本,修改副本后需再次调用 setter 才能生效。邮件转 PDF 时,也可以通过 CConverterProperties 使用这些设置。