我试图按照iText7文档中的一些内容在我的pdf文档中插入一个标题,但是GetPageSize()返回'Object reference not set to a Object实例‘。
我尝试通过PdfDocument对象和Document对象添加页面,并设置页面大小。我可以在循环中看到4页,但是,我所做的任何更改都不会给我一个页面大小。
public static void createPdf(string dest)
{
MemoryStream stream = new MemoryStream();
PdfWriter writer = new PdfWriter(stream);
PdfDocument pdfDoc = new PdfDocument(writer);
pdfDoc.AddNewPage(PageSize.A4);
pdfDoc.AddNewPage(PageSize.A4);
pdfDoc.AddNewPage(PageSize.A4);
pdfDoc.AddNewPage(PageSize.A4);
var doc = new Document(pdfDoc);
doc.Add(new Paragraph("This is page 1."));
doc.Add(new AreaBreak(AreaBreakType.NEXT_PAGE));
doc.Add(new Paragraph("This is page 2."));
doc.Add(new AreaBreak(AreaBreakType.NEXT_PAGE));
doc.Add(new Paragraph("This is page 3."));
doc.Add(new AreaBreak(AreaBreakType.NEXT_PAGE));
doc.Add(new Paragraph("This is page 4."));
Paragraph header = (new Paragraph("Copy").SetFont(PdfFontFactory.CreateFont(StandardFonts.HELVETICA)).SetFontSize(14));
for (int i = 1; (i <= pdfDoc.GetNumberOfPages()); i++)
{
PdfPage page = pdfDoc.GetPage(i);
Rectangle pageSize = page.GetPageSize();
float x = (pdfDoc.GetPage(i).GetPageSize().GetWidth() / 2);
float y = (pdfDoc.GetPage(i).GetPageSize().GetTop() - 20);
doc.ShowTextAligned(header, x, y, i, TextAlignment.CENTER, VerticalAlignment.BOTTOM, 0);
}
doc.Close();
}
错误消息System.NullReferenceException:“对象引用未设置为对象的实例。”occurson行矩形pageSize=page.getpagesize();
当您使用document
实例时,它将刷新默认情况下写入PDF的内容,因此,当您添加了4页内容时,在执行获取矩形大小的循环时,第一页已经刷新了。
要解决此问题,可以告诉文档
在默认情况下不要刷新其内容,方法是将false
传递给构造函数中的第三个参数(immediateflush
):
var doc = new Document(pdfDoc, PageSize.Default, false);