【发布时间】:2019-11-10 15:11:12
【问题描述】:
我有一个SVGDocument,我以编程方式从数据库连接中检索为byte[]。 <svg> 元素包含适当的 viewBox 属性,该属性涵盖了现有进程需要呈现为 PDF 的 SVGDocument 部分。
使用以下(简单)代码,我能够验证 viewBox 属性设置是否正确:
Element rootElement = svgDocument.getRootElement();
String viewBox = rootElement.getAttribute("viewBox");
log.debug("viewBox={}", viewBox);
// viewBox=-612 0 1224 792
我的目标是使用 Batik getEnclosureList() 方法检索 NodeList 并构建一个新的(裁剪的)SVGDocument,我可以将其发送到将呈现 PDF 的旧进程。
我尝试使用的代码如下:
SVGRect rectangle = svgDocument.getRootElement().createSVGRect();
rectangle.setX(minX); // -612
rectangle.setY(minY); // 0
rectangle.setWidth(startingX); // 1224
rectangle.setHeight(startingY); // 792
NodeList croppedNodes = svgDocument.getRootElement().getEnclosureList(rectangle, null);
我的问题是,当我使用这种方法时,SVGSVGContext 为空。
我试图找到如何设置SVGSVGContext 没有成功,这就是为什么我决定在这里发布我的问题。
我不赞成将 Apache Batik 用于此解决方案,但似乎 getEnclosureList() 方法可能会返回我完成任务所需的内容。
【问题讨论】: