coldfusion - ABCpdf 复制页眉和页脚

标签 coldfusion coldfusion-10 abcpdf abcpdf9

我使用 ABCpdf 9.1 x64 .Net 和 Coldfusion 创建基于 HTML 内容的 PDF。每个 PDF 文档都有不同的页眉和页脚,这些页眉和页脚是使用一些 Coldfusion 代码生成为 HTML 的。每个页面的页眉都相同,每个页面的页脚略有不同(因为它显示页码)。这是我的代码的主要部分:

// add content
theDoc.Get_Rect().Set_String("67 80 573 742");
theContentID = theDoc.AddImageHTML(pdfContent);

while (true) {
    if (!theDoc.Chainable(theContentID)) {
        break;
    }
    theDoc.Set_Page(theDoc.AddPage());
    theContentID = theDoc.AddImageToChain(theContentID);
}

// add header & footer on each page
for (i=1; i <= theDoc.Get_PageCount(); i++) {
    // set page
    theDoc.Set_PageNumber(i);

    // HEADER
    theDoc.Get_Rect().Set_String("67 755 573 809");
    theDoc.AddImageHTML(headerContent);

    // FOOTER
    theDoc.Get_Rect().Set_String("67 0 573 65");
    theDoc.AddImageHTML(replace(footerContent, "[page]", i));
}

如您所见,AddImageHTML() 方法为每个页面调用 2 次,为内容调用一次。因此,如果我有创建 6 个页面的内容,该方法将被调用 13 次。这并不理想,因为该方法会消耗大量时间。

是否有更有效的方法从 HTML 添加页眉和页脚?有一个方法 AddImageCopy() 但它不适用于 AddImageHtml() 创建的对象。

只是为了理解:这些 getter 和 setter 方法是由 Coldfusion 创建的,用于访问 .Net 属性。

最佳答案

  1. 如果您的 HTML 相对简单并且不依赖 CSS,您或许可以将其调整为 HTML 样式文本并使用 AddHtml 而不是 AddImageHtmlAddHtml 的执行速度应该比 AddImageHtml 快得多。作为附带好处,您将能够在必要时使用引用(非系统安装)字体和 CMYK 颜色。

  2. 由于每个页面上的 header 都相同,也许您可​​以在辅助 Doc 对象上使用 AddImageHtml,然后将其作为图像添加到每个页面上。这会将对页眉的调用从每页一次减少到每个文件一次。

  3. 由于每个页面上的页脚都不同,我看不出如何避免在每个页面上调用something

关于coldfusion - ABCpdf 复制页眉和页脚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21110568/

相关文章:

coldfusion - 如何在 ColdFusion 8 中使 ARGUMENTS 成为可选?

.net - ABCpdf 时不时就会耗尽内存

abcpdf - 将 PDF 转换为文本时,我可以防止 ABCpdf 将单词混搭在一起(例如 mashingwordstogether)吗?

ABCPDF6 问题 : "HTML render is blank" but web page output is fine

regex - 正则表达式 : convert a list of name and value pairs to query string

Coldfusion 9 默认时区问题

sql-server - 使用 CFINSERT 后获取主键 - ColdFusion

CFHTTP 的 Post 方法在 Coldfusion 10 中不起作用,但 get 可以工作

coldfusion - 不带变量的 CFSET 调用函数

coldfusion - Google OAuth 代码包含标签