当前位置: 首页 > 知识库问答 >
问题:

pdfdocument.getPageSize()未设置为对象iText7的实例

段干宾白
2023-03-14

我试图按照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();

共有1个答案

佘单鹗
2023-03-14

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

要解决此问题,可以告诉文档在默认情况下不要刷新其内容,方法是将false传递给构造函数中的第三个参数(immediateflush):

var doc = new Document(pdfDoc, PageSize.Default, false);
 类似资料:
  • 我需要将一些html转换为PDF。我遇到了IText7,它看起来是一个很好的解决方案。 我正在. net core 3.1中开发 但是,即使使用它的基本实现,我也会遇到一个错误: 每个人都喜欢这个错误: 对象引用未设置为对象的实例。 内部异常为null,唯一的线索是SerializationStackTraceString是: 在iText. IO. FontCache. cctor() 那么,它

  • 是否有建议使用具有段落的单元格构建表,以避免在向表或文档添加单元格时出现异常?我明白了,但我不知道会发生什么: 以下是使用Windows控制台项目的简单快照(与实际项目相比): 注意,注释的代码行: 添加它可以作为一种变通方法,使文档能够毫无例外地呈现。

  • 我试图在Windows控制台应用程序中下载azure Blob。当我构建和调试应用程序时,我的azure连接字符串引发了一个异常。这个字符串在我的其他ASP.NET应用程序中工作得很好。

  • 在我的ASP.NET程序中。我设置了一个受保护的列表。我在列表中添加了一个值。但它显示对象引用未设置为对象错误的实例 如何解决这个错误?

  • 创建新的PDF文档时会发生以下情况。在第三页上创建第一个文本字段时出错。前两页上创建了多个字段,没有问题。 相关代码: 插入pdfPage。冲洗();在“PdfPage PdfPage=pdfDoc.AddNewPage(pageSize);”之后语句在将第一个文本框添加到第一页时会导致相同的错误。 如何更正错误?

  • 我有以下C#类: 总而言之,区域设置有区域、按钮和字段。区域有中心和东部。中心和东部拥有产权。Fields包含具有属性firstName、lastName和ChooseLocale的标签。 在一个名为GetLocale的方法中,我有以下代码: 运行代码时,在以下行抛出一个“NullReferenceException was unhandled by user code”: 我设置属性title、