3

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 回、コンテンツに対して 1 回呼び出されます。したがって、6 ページを作成するコンテンツがある場合、メソッドは 13 回呼び出されます。このメソッドは多くの時間を消費するため、これは理想的ではありません。

HTML からヘッダーとフッターを追加するより効率的な方法はありますか? メソッドはありAddImageCopy()ますが、 によって作成されたオブジェクトでは機能しませんAddImageHtml()

理解のために: これらの getter メソッドと setter メソッドは、.Net プロパティにアクセスするために Coldfusion によって作成されます。

4

2 に答える 2

1
  1. AddHtmlHTML が比較的単純で、CSS に依存していない場合は、おそらくそれを HTML スタイルのテキストに微調整して、代わりにuse を使用できますAddImageHtmlAddHtmlよりもはるかに高速に実行する必要がありますAddImageHtml。副次的な利点として、必要に応じて、参照されている (システムにインストールされていない) フォントと CMYK カラーを使用できるようになります。

  2. ヘッダーはすべてのページで同一であるため、おそらくAddImageHtmlセカンダリDocオブジェクトで使用し、それを各ページの画像として追加できます。これにより、ヘッダーの呼び出しがページごとに 1 つからファイルごとに 1 つに削減されます。

  3. フッターはページごとに異なるため、各ページで何かの呼び出しを回避する方法がわかりません。

于 2014-01-17T19:14:10.097 に答える