Java Spring Boot-Itext-Error-PTagWorker类型的Worker无法处理DivTagWorker
使用IText处理HTML以创建PDF文件时,我在记录器中遇到以下错误:Java Spring Boot-Itext-Error-PTagWorker类型的Worker无法处理DivTagWorker,java,spring-boot,itext,Java,Spring Boot,Itext,使用IText处理HTML以创建PDF文件时,我在记录器中遇到以下错误: ERROR 9260 --- [nio-8080-exec-2] c.i.h.attach.impl.DefaultHtmlProcessor : Worker of type com.itextpdf.html2pdf.attach.impl.tags.PTagWorker unable to process com.itextpdf.html2pdf.attach.impl.tags.DivTagWorker 该
ERROR 9260 --- [nio-8080-exec-2] c.i.h.attach.impl.DefaultHtmlProcessor : Worker of type com.itextpdf.html2pdf.attach.impl.tags.PTagWorker unable to process com.itextpdf.html2pdf.attach.impl.tags.DivTagWorker
该错误不是典型的堆栈跟踪错误,只是记录器中的一个错误。它也不会停止执行,最终生成PDF。我的HTML和PDF文件都相当大,因此很难逐块检查,但快速查看似乎不会显示目标文件中的任何实际错误
是否有发生/显示此错误的具体原因?它最终会阻止生成PDF文件吗
(所有这些都是在Spring Boot应用程序的上下文中发生的。我不知道这是否相关)。即使您的HTML文件很大,您也不必逐个检查,您可以使用二进制搜索方法—将您的文档分成两个或多或少相等的部分,然后尝试使用文件的前半部分,如果问题再次出现,将其进一步分解为两部分。如果问题没有在文件的前半部分重现,那么它应该在文件的后半部分重现,您将继续将文件分割为两个较小的部分,直到文件足够小,可以看到问题 由于
pdfHTML
插件是开源的,您可以调试问题的根源-只需转到PTagWorker#processTagChild
的根源,并点击返回false处的断点代码>行(请参阅)-如果结果为iffalse
,则记录相关错误。通过检查DefaultHtmlProcessor#visit
中调用堆栈下一级的调用,即与HTML元素对应的element
局部变量,您将能够更好地查看触发日志错误的元素的上下文
因此,可以通过使用上述方法中的一种来推断具体原因-这可能是pdfHTML中的错误/缺失特性,或者是一个块级元素被添加到段落级元素中,并且没有自动规范化
此日志错误本身不会阻止生成PDF文件,但它会导致生成的PDF中缺少某些内容,因此找到根本原因非常重要。实际上,您发布的消息没有明确说明错误。可能是由于某种原因,调试输出变得太明显了……糟糕的是,一开始我没有复制整个内容。