0

抱歉,如果这是之前发布的

我需要在 pdf 文件中打印费用清单。该列表可以扩展到任意数量的页面。

我正在通过迭代 datarow 对象来编写列表。一件重要的事情是,当当前页面即将结束时,需要在页面末尾打印运行总计。我写了一个实现 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 事件尝试写入两列。上面的代码被调用,但行没有出现在 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 回答