0

これが以前に投稿された場​​合は申し訳ありません

経費のリストをPDF文書で印刷する必要があります。リストは任意の数のページに拡張できます。

datarowオブジェクトを反復処理してリストを作成しています。重要なことの1つは、現在のページが終了するときはいつでも、ページの最後に現在の合計を印刷する必要があるということです。PdfPageEventHandlerを実装するクラスを以下のように作成しました

public class PaymentPageEventHandler : iTextSharp.text.pdf.PdfPageEventHelper
{
    PdfContentByte cb;

    private string subTotal = "";

    public string GetSubtotal
    {
        set{
            value = subTotal;
        }
        get
        {
            return subTotal;
        }
    }

    public override void OnEndPage(PdfWriter writer, Document document)
    {
    //    base.OnEndPage(writer, document);

        cb = writer.DirectContent;

        float[] iOuterTblWidth = { 10, 40F, 8, 12, 10 }; column widths of the table.

        PdfPTable pdftbl = new PdfPTable(iOuterTblWidth);
        PdfPCell cell = new PdfPCell();

        cell.Colspan = 4;
        cell.AddElement(new Chunk("Sub-Total"));
        cell.HorizontalAlignment = 0;
        pdftbl.AddCell(cell);

        cell = new PdfPCell();
        cell.AddElement(new Chunk(GetSubtotal));
        cell.HorizontalAlignment = 2;
        pdftbl.AddCell(cell);

    }
}

上記のonEndPAgeイベントは、2つの列を書き込もうとします。上記のコードは呼び出されますが、行はpdfページに表示されません。

私は上記のクラスを以下のように呼んでいます

PaymentPageEventHandler ppem = new PaymentPageEventHandler();
ppem.GetSubtotal = "123"; // test value to print as running total
writer.PageEvent = ppem; // assigning event to writer object

PdfContentByte変数cbを明示的に呼び出して書き込む必要があります。もしそうなら、どのように私はセルをpdfに書くべきですか?

誰かがこれについて私を助けることができますか?

4

1 に答える 1

0

WriteSelectedRowsメソッドを使用してテーブルを追加する必要があります。ドキュメントを読み、この例(またはのC#ポート)を見てください。

次の行を探します。

table.WriteSelectedRows(0, -1, 34, 803, writer.DirectContent);

明らかに、座標を調整する必要があります。

于 2013-03-09T12:05:07.500 に答える