我正在使用 iTextsharp 库来创建 PDF 文件。我可以像这样声明 A4 Landscape 纸:

 Dim pdfTable As New PdfPTable(9)
pdfTable.WidthPercentage = 100
Dim pdfDoc As New Document(PageSize.A4.Rotate())

我想知道如何手动设置 pdfTable 的高度或 A4 高度。因为底部留有更多的边距,我需要在该边距处放置一些文本。现在,我在底部放了一行文本,该行已被推送到新页面。

Q1:如何覆盖 iTextsharp 提供的 A4 纸的高度?

Q2:如何创建自定义尺寸的纸张,比如宽度 = 29 厘米,高度 = 22 厘米?

谢谢你。

最佳答案

您可以使用自定义 PdfpageEvent 向页脚添加文本或表格或任何内容。

这是一些将 4 列表添加到页脚的代码(抱歉,它是在 C# 中):

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

    PdfContentByte cb = writer.DirectContent;

    var footerTable = new PdfPTable(4);

    var columnWidth = (document.Right - document.LeftMargin) / 4;

    footerTable.SetTotalWidth(new float[] { columnWidth, columnWidth, columnWidth, columnWidth });

    var cell1 = new PdfPCell();
    cell1.AddElement(new Paragraph("Date:"));
    cell1.AddElement(new Paragraph(DateTime.Now.ToShortDateString()));
    footerTable.AddCell(cell1);

    var cell2 = new PdfPCell();
    cell2.AddElement(new Paragraph("Data:"));
    cell2.AddElement(new Paragraph("123456789"));
    footerTable.AddCell(cell2);

    var cell3 = new PdfPCell();
    cell3.AddElement(new Paragraph("Date:"));
    cell3.AddElement(new Paragraph(DateTime.Now.ToShortDateString()));
    footerTable.AddCell(cell3);

    var cell4 = new PdfPCell();
    cell4.AddElement(new Paragraph("Page:"));
    cell4.AddElement(new Paragraph(document.PageNumber.ToString()));
    footerTable.AddCell(cell4);

    footerTable.WriteSelectedRows(0, -1, document.LeftMargin, cell4.Height + 50, cb);
}

这是调用上述代码的代码:
var pdfWriter = PdfWriter.GetInstance(pdf, new FileStream(fileName, FileMode.Create));
pdfWriter.PageEvent = new CustomPdfPageEvent();

关于vb.net - iTextSharp 自定义纸张大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2493564/

10-13 07:54