PdfDocument.GetPageSize()未设置为对象iText7的实例

我正在尝试遵循一些iText7文档将标头插入我的pdf文档中,但是GetPageSize()返回“对象引用未设置为对象的实例。”

我尝试通过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:“对象引用未设置为对象的实例。”发生在矩形Rectangle pageSize = page.GetPageSize();

shinyzhuzhu 回答:PdfDocument.GetPageSize()未设置为对象iText7的实例

在您使用Document实例后,它将默认刷新写入PDF的内容,因此,当您添加4页内容时,在执行循环获取时第一个已被刷新矩形大小。

要解决此问题,您可以通过将Document传递给构造函数(false)中的第三个参数,告诉immediateFlush默认不刷新其内容:

var doc = new Document(pdfDoc,PageSize.Default,false);
本文链接:https://www.f2er.com/3167427.html

大家都在问