Я вижу эти решения, оба немного грязные.
Решение № 1: Установите свой собственный фильтр в логгер. Фильтр может проверить сообщение журнала и установить локальный флаг потока. Проверьте флаг после звонка getText()
. Не забудьте удалить флаг, иначе ваша локальная карта будет заполнена.
Вы можете заменить регистрацию общего ресурса чем-то другим, например, logback, который поддерживает MDC . Затем вы можете поставить флаг в MDC.
Решение № 2: Исправить источники PDFbox. В классах PDSimpleFont
и PDType0Font
добавьте геттер:
public boolean hadEncodingProblems() {
return !noUnicode.isEmpty();
}
Должен быть способ получить все шрифты после вызова getText()
.
Решение № 3: Используйте отражение, чтобы прочитать значение поля (слава мкл ). Обратите внимание, что это может нарушиться с новыми версиями Java или когда SecurityManager является установщиком или активирована версия по умолчанию.