Spring Boot - Itext - Ошибка - рабочий типа PTagWorker не может обработать DivTagWorker - PullRequest
1 голос
/ 13 февраля 2020

При использовании 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-файлы довольно большие, поэтому их сложно проверить по частям, но при быстром просмотре не видно каких-либо реальных ошибок в целевом файле.

Есть ли специфика c причина, почему эта ошибка происходит / отображается? И предотвратит ли он в конечном итоге создание PDF-файла?

(все это происходит в контексте приложения Spring Boot. Я не знаю, может ли это иметь значение).

1 Ответ

1 голос
/ 16 февраля 2020

Даже если ваш HTML файл большой, вам не нужно проверять по частям, и вы можете вместо этого использовать бинарный поиск - разбейте ваш документ на две более или менее равные части и попробуйте с первой половиной файла, и если проблема воспроизводит, разделите его далее на две части. Если проблема не воспроизводится для первой половины файла, тогда она должна воспроизводиться для второй половины файла, и вы будете продолжать разбивать фрагменты файла на два меньших, пока файл не станет достаточно маленьким, чтобы увидеть проблему.

Поскольку надстройка pdfHTML является открытым исходным кодом, вы можете вместо этого отладить источник проблемы - просто go до источника PTagWorker#processTagChild и достичь точки останова в строке return false; (см. source на GitHub ) - если результат, если false, то ошибка регистрируется. Оттуда вы сможете лучше увидеть контекст элементов, вызывающих ошибку журнала, проверив вызов на один уровень ниже стека вызовов в DefaultHtmlProcessor#visit, а именно element локальная переменная, которая соответствует элементу HTML.

Таким образом, конкретную c причину можно вывести, используя один из представленных выше подходов - это может быть ошибка / отсутствующая функция в pdf HTML или тот факт, что элемент уровня блока добавляется к уровню абзаца элемент, который не был нормализован автоматически.

Эта ошибка журнала сама по себе не помешает созданию файла PDF, но может привести к отсутствию некоторого содержимого в результирующем PDF, поэтому важно найти root причина.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...