C# Itextsharp:未调用OnEndPage事件

C# Itextsharp:未调用OnEndPage事件,c#,pdf,itext,C#,Pdf,Itext,我正试图在PDFPageEventHelper的帮助下在现有PDF文件中添加标题。我发现错误文档在某些文件中没有页面。该代码适用于其他文件。在调试过程中,我发现对于某些文件,onedpage方法没有被调用,这可能导致抛出异常“文档没有页面” 知道为什么不调用此方法或事件(OneDPage)吗?可能您的PDF文件不包含任何页面信息。PDF将内容渲染到边界框中。你所要做的就是定义一个盒子,然后把东西渲染到里面。因此,您不需要任何页面信息 在现实世界里,有很多疯狂的页面。有些声明一个框,以便(0,0)

我正试图在
PDFPageEventHelper
的帮助下在现有PDF文件中添加标题。我发现错误
文档在某些文件中没有页面
。该代码适用于其他文件。在调试过程中,我发现对于某些文件,
onedpage
方法没有被调用,这可能导致抛出异常“文档没有页面”


知道为什么不调用此方法或事件(OneDPage)吗?

可能您的PDF文件不包含任何页面信息。PDF将内容渲染到边界框中。你所要做的就是定义一个盒子,然后把东西渲染到里面。因此,您不需要任何页面信息

在现实世界里,有很多疯狂的页面。有些声明一个框,以便(0,0)在框的中间。非常适合绘图函数,但有些库失败,因为它们只在以左/上角(0,0)开头的页面中思考。这样的框可以在一个文档中多次转换

许多PDF文档包含许多违反PDF规则的部分。市场上有一些工具,可以根据PDF参考文件验证您的文件。一些人试图修复它们。一个廉价的解决方法可能是将PDF读入libre office并再次保存为PDF。这将只修复一小部分错误,但您的错误可能就在其中


您必须在文本编辑器中阅读失败的文档才能找到原因。但是a*

“我发现对于一些文件,
OnEndPage
方法没有被调用,这可能会导致抛出异常‘文档没有页面’”-不,没有调用
OnEndPage
不是异常的原因,而是像异常一样的结果。。。您试图关闭编写器而不向其添加任何内容的效果。如果在
使用(PdfWriter…
使用(Document…
块)时早期出现其他异常,则通常会发生这种情况。在这种情况下,异常会结束
using
块,导致写入程序关闭而没有内容,从而触发错误。也就是说,您使用了错误的类:要在现有PDF文件中添加头,不使用写入程序,而是使用母版。确实如此。在这个问题上没有代码示例,但是如果正确添加页眉/页脚,就不可能出现“文档没有页面”错误。我投了反对票,因为没有代码示例。我还建议OP阅读官方文档(并且:升级到iText 7,而不是使用旧的iText版本)。@BrunoLowagie很抱歉没有提供代码,但我无法按照我组织的策略放置代码。但是我找到了我需要使用cb.AddTemplate方法的解决方案。所以。。。您是说您在一个有政策不开放源代码itd代码的组织中使用AGPL软件?你在哪家公司工作?您的雇主是否意识到这样的政策可能会使使用iText成为非法行为?谢谢您的帮助。我已经发现,当现有的pdf文件具有“横向”方向的页面时,会发生此错误,下面是导致错误的代码。cb.添加(第页)。cb=PdfContentByte.Check首先检查页面是否真的处于横向。您可以在纵向中定义页面框并设置横向元数据。从iText获取源代码并打开所有异常。