gpt4 book ai didi

java - 如何从 XHTML 字符串创建 Java2DRenderer?

转载 作者:行者123 更新时间:2023-12-01 09:44:54 25 4
gpt4 key购买 nike

我正在使用Flying Saucer从 XHTML 字符串创建图像。阅读了几个示例后,我发现我可以使用名为 Java2DRenderer 的类来做到这一点。它具有接受文件、URI 和 DOM 文档的构造函数。因此,我决定使用 DOM 文档,因为它们可以从 String 创建。另一方面,所有接受此类类型的构造函数都需要另外两个参数:宽度和高度。

例如:

    // Creates DOM document from String
Document doc = DocumentBuilderFactory.newInstance()
.parse(new ByteArrayInputStream(xhtmlString.getBytes()));

//See constructor parameters: DOM document, width and height
Java2DRenderer imageRenderer = new Java2DRenderer(doc,
1024, 768);

imageRenderer.setBufferedImageType(BufferedImage.TYPE_INT_RGB);

BufferedImage image = imageRenderer.getImage();

不幸的是,有时 xhtmlString 太大,XHTML 内容不适合 768 高度的图像。发生这种情况时,会生成截断的图像。我无法预测它,并且硬编码更高的值将使大多数图像(小图像)膨胀。

作为 Java2DRenderer 的 constructor 之一接受 java.io.File只需要求我们提供宽度(高度由 API 确定),我想我必须选择:

  1. 将 XHTML 字符串保存到文件
  2. 从 XHTML 字符串在内存中创建文件

似乎都不是好的选择。第一个会增加额外的 IO 开销,但第二个是可以接受的(如果可能的话)。我想我可以使用 Apache VFS 在内存文件中创建FileObject(它支持RAM文件系统),但它似乎与Java IO File类不兼容。我无法将 org.apache.commons.vfs2.FileObject 传递给接受 java.io.File 的构造函数。

您还建议我采取哪些其他选项来解决我的问题?

最佳答案

查看Java2DRenderer的源码,构造函数public Java2DRenderer(File file, int width)将高度初始化为-1

所以你应该打电话:

Java2DRenderer imageRenderer = new Java2DRenderer(doc, 1024, -1);

关于java - 如何从 XHTML 字符串创建 Java2DRenderer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38145101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com