0

ItextSharp を初めて使用するのですが、ページ イベントの終了後にヘッダーとフッターをマージンの外側に配置する方法を知りたいですか? ページ マージンの外側にフッターを追加する代わりに onendpage イベントを使用すると、ページ マージンの内側に追加され、マージンの外側に追加する必要がある下部マージンを超えると、常にスタック オーバーフロー例外が発生するようです。

マージンの外側のドキュメントフッターにテキストを追加するように指示する設定はありますか (またはパディングですか)?

前もって感謝します。

4

2 に答える 2

0

それを見つけました、私は本当にcolumntextを使用しないのが好きですが、私はcolumntextを使用します:)そしてsetsimplecolumnを使用します。

于 2013-07-19T08:00:42.617 に答える
0

あなたは iText を初めて使用するので、特定のトピックに関するサンプルを探している場合は、まずiText in Action — 2nd Editionのサンプルのキーワード リストを調べてください。あなたの場合、キーワードのヘッダー/フッターが適切です。そこで参照されている最初のサンプルpart1.chapter05.MovieHistory2では、ヘッダーとフッターの一般的な追加方法が既に示されています。

まず第一に、すでに述べたようonEndPageに、正確にはページイベントを使用する必要があります。これは、拡張することで最も簡単に実行できますPdfPageEventHelper.

さらに、あなたの質問によると、あなたは気づいていないようですが、呼び出しなどでヘッダーやフッターを追加するべきではありません。 .)。代わりに、直接コンテンツ アクセスを使用してヘッダーとフッターを配置する必要があります。document.addonEndPage

サンプルは次のようにします。

    /**
     * Adds the header and the footer.
     * @see com.itextpdf.text.pdf.PdfPageEventHelper#onEndPage(
     *      com.itextpdf.text.pdf.PdfWriter, com.itextpdf.text.Document)
     */
    public void onEndPage(PdfWriter writer, Document document) {
        Rectangle rect = writer.getBoxSize("art");
        switch(writer.getPageNumber() % 2) {
        case 0:
            ColumnText.showTextAligned(writer.getDirectContent(),
                    Element.ALIGN_RIGHT, header[0],
                    rect.getRight(), rect.getTop(), 0);
            break;
        case 1:
            ColumnText.showTextAligned(writer.getDirectContent(),
                    Element.ALIGN_LEFT, header[1],
                    rect.getLeft(), rect.getTop(), 0);
            break;
        }
        ColumnText.showTextAligned(writer.getDirectContent(),
                Element.ALIGN_CENTER, new Phrase(String.format("page %d", pagenumber)),
                (rect.getLeft() + rect.getRight()) / 2, rect.getBottom() - 18, 0);
    }

ColumnText.showTextAligned新しいページが生成されたり、その他の不要な効果が発生したりすることなく、ヘッダー、フッターなどをページ上の必要な場所、通常は上下の余白の外側に正確に配置できます。

于 2013-07-19T08:02:03.643 に答える