spring boot-itext-error-ptagworker类型的worker无法处理divtagworker

k7fdbhmy  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(586)

使用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

该错误不是典型的堆栈跟踪错误,只是记录器中的一个错误。它也不会停止执行,最终会生成pdf。我的html和pdf文件都相当大,所以很难逐段检查,但是快速查看似乎不会显示目标文件中的任何实际错误。
是否有发生/显示此错误的具体原因?它最终会阻止生成pdf文件吗?
(所有这些都发生在spring引导应用程序的上下文中。我不知道这是否相关)。

vngu2lb8

vngu2lb81#

即使你的html文件很大,你也不必逐段检查,你可以使用二进制搜索方法来代替——把你的文档分成两个或多或少相等的部分,然后试着处理文件的前半部分,如果问题再次出现,就把它进一步分成两部分。如果问题没有在文件的前半部分重现,那么它应该在文件的后半部分重现,您将继续将文件分为两个较小的部分,直到文件足够小,可以看到问题为止。
作为 pdfHTML 加载项是开源的,您可以调试问题的源代码-只需转到问题的源代码 PTagWorker#processTagChild 然后在 return false; 行(请参阅github上的源代码)-如果 false 然后记录有问题的错误。在那里,您将能够更好地查看触发日志错误的元素的上下文,方法是在中的调用堆栈的下一级检查调用 DefaultHtmlProcessor#visit 也就是说 element 与html元素相对应的局部变量。
因此,具体的原因可以通过使用上面介绍的方法中的一种来推断——这可能是pdfhtml中的一个bug/缺少的特性,或者一个块级元素被添加到一个段落级元素中,并且没有自动规范化。
此日志错误本身不会阻止生成pdf文件,但会导致生成的pdf中缺少某些内容,因此找到根本原因非常重要。

相关问题