我正在使用 Flying Saucer 从 XHTML 创建 PNG 图像文件。然后,我使用另一个工具将这些内容与一堆其他文本图像一起收集到 PDF 中。
虽然我可以将我们的 PDF 导出处理转换为 iText,但这将是一项相当大的工作......
我遇到的问题是在导出为 PNG 图像文件时需要对一些 XHTML 内容进行分页。我可以在图像文件之间进行简单的“剪辑样式”中断。
这是我用来将整个内容呈现到单个文件的内容,并且效果很好。
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 所做的事情,但是如何将各个页面呈现为单独的图像文件?