Разбиение файлов изображений XHTML в PNG с помощью Flying Saucer

0

Я использую Flying Saucer для создания файлов изображений PNG с XHTML. Затем я использую другое средство для их сбора в формате PDF, а также множество других текстовых изображений.

Хотя я мог бы конвертировать нашу обработку экспорта в PDF в iText, это было бы довольно большой задачей....

Проблема в том, что некоторые XHTML-материалы, которые мне нужно разбивать по страницам, экспортируются в файлы изображений PNG. Я в порядке с простым перерывом между клипами между файлами изображений.

Здесь я использую только для того, чтобы отобразить весь контент в один файл, и он работает хорошо.

File file = File.createTempFile("AAA", "." + suffix);
XHTMLPanel panel = new XHTMLPanel();
panel.setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

InputStream is = <create content>;

panel.setDocument(is, "");

Graphics2DRenderer renderer = new Graphics2DRenderer();
renderer.setDocument(panel.getDocument(),"");

BufferedImage img = new BufferedImage(DEFAULT_WIDTH,
         DEFAULT_HEIGHT, BufferedImage.TYPE_INT_ARGB);
Graphics2D graphics = (Graphics2D) img.getGraphics();
graphics.setColor(Color.white);
graphics.fillRect(0, 0, DEFAULT_WIDTH, DEFAULT_HEIGHT);

renderer.layout(graphics,null);         
renderer.render(graphics);

ImageIO.write(img, suffix, file);

Тем не менее, часть моего контента "охватывает" несколько страниц и вышеперечисленную обработку просто отображает верхние пиксели DEFAULT_HEIGHT и фиксирует остаток.

Есть ли способ "перебирать" содержимое панели (вертикально) и визуализировать, скажем, X пикселей содержимого в уникальные файлы изображений? Это то, что делает ITextRenderer, но как я могу отображать отдельные страницы для разделения файлов изображений?

Теги:
image
flying-saucer

1 ответ

-1

Это запомнилось. К счастью, Graphics2DRenderer позволяет узнать, насколько велика область XHTML (ширина n высота).

Я просто перерисовываю в BufferedImage этого размера, а затем итеративно отделяю части этого полного изображения на изображения "страницы" с помощью Grahpics2D.drawImage(Image,), а затем сбрасывает их на диск.

Не самый красивый, но он работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню