【问题标题】:ABCpdf copy header and footerABCpdf 复制页眉和页脚
【发布时间】:2014-01-14 10:00:05
【问题描述】:

我正在使用 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 属性。

【问题讨论】:

    标签: coldfusion coldfusion-10 abcpdf abcpdf9


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

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

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

    【讨论】:

    • 这也是我从WebSupergoo得到的答案。谢谢!
    【解决方案2】:

    我使用了这种方法,所有页面的标题都相同

    doc.PageNumber = 1;
    doc.Rect.Rectangle = headerRect; //headerrect should define the rect where the header is
    doc.AddImageHtml(headerHtml);  //perform addimage html once
    
    //repeat for other pages (clones the header. much faster than calling addImageHtml every time)
     for (int i = 1; i <= doc.PageCount; i++)
      {
        doc.PageNumber = i;
            doc.AddImageDoc(doc, 1, doc.Rect);
       }
    

    【讨论】:

      猜你喜欢
      • 2015-03-03
      • 1970-01-01
      • 2011-09-09
      • 1970-01-01
      • 2020-11-30
      • 2011-08-17
      • 2017-03-20
      相关资源
      最近更新 更多