Добавление заполнителей «поврежденное изображение» с помощью Flying Saucer

#flying-saucer #xhtmlrenderer #brokenimage

#летающая тарелка #xhtmlrenderer #сломанное изображение

Вопрос:

Я использую Flying Saucer для генерации PDF из HTML (поэтому я использую ITextRenderer, если это имеет значение.)

Я хотел бы смоделировать что-то вроде того, что Webkit или Gecko вставляют, когда изображение не может быть найдено — что-то вроде контура вставки и немного разбитого изображения страницы.

Я определил, что переопределение getImageResource в UserAgentCallback — это способ проверить это условие (изображение в ImageResource будет null ), но я не могу придумать хороший способ рендеринга заполнителя на данном этапе в API.

Есть ли правильный способ сделать это? (Было бы неплохо, если бы это происходило из коробки …)

Ответ №1:

Здесь вы на правильном пути.

Вы хотите расширить UserAgentCallback с помощью вашей собственной функциональности пользовательского агента. Он должен выполнять почти идентичную функциональность того, что делает существующая реализация Flying Saucer, за исключением того, что, когда изображение не найдено, оно должно возвращать изображение поврежденной страницы по умолчанию, которое вы хотите включить.

Если вы используете ITextRenderer, существует класс ITextUserAgent, который вы можете расширить для своего собственного пользовательского пользовательского агента.

Чтобы установить UserAgent, после создания ITextRenderer, используйте следующий код.

 ITextRenderer renderer = new ITextRenderer();
renderer.getSharedContext().setUserAgentCallback(new CustomITextUserAgent(renderer.getOutputDevice()));