1

ドキュメントにPdfPTableiTextSharp を使用して書かれています。テーブルが別のページにオーバーフローするたびに繰り返されるヘッダー行がいくつかあります。これらの行の 1 つに、"John Doe" などのテキストを含むセルが含まれています。

私が望むのは、そのテキストが後続の各ページで「John Doe (続き)」に変わることです。私が知る限り、そのページのヘッダー セルのインスタンスを何らかの方法で操作するイベントで何かをする必要がありOnEndPageますが、書かれたコンテンツでセルを正確に見つけて操作する方法を見つけるのに苦労しています。

どうすればこの目標を達成できますか?

4

2 に答える 2

4

試行錯誤の末、実用的な解決策を得ることができました。IPdfCellEvent単一のメソッドを宣言するを実装しましたCellLayoutiText documentationに従って、これはセルがレンダリングされた後に呼び出されます。つまり、最初に呼び出されたときに、テーブルの最初のページのセルがレンダリングされます。したがって、この呼び出しを使用して余分なテキストを追加し、後続のすべてのレンダリングに追加のテキストが含まれるようにします。

これは私のインターフェースの実装です:

private class ContinuedCellEvent : IPdfPCellEvent
{
    public void CellLayout( PdfPCell cell, Rectangle position, PdfContentByte[] canvases )
    {
        if ( !_continuationApplied )
        {
            // This is called AFTER cell rendering so this should set the cell for the next time it is rendered
            // which will always be on a continuation.
            cell.Phrase.Add( new Chunk( " Continued" ) );

            _continuationApplied = true;
        }
    }

    private bool _continuationApplied;
}

セルを定義するときに使用されます。

cell.CellEvent = new ContinuedCellEvent();
于 2013-06-03T13:33:41.223 に答える