我正在使用 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/