首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Batik将svg转换为图像时的TranscoderException

使用Batik将svg转换为图像时的TranscoderException
EN

Stack Overflow用户
提问于 2020-11-01 04:43:08
回答 1查看 97关注 0票数 0

我正在尝试将svg内容转换为pdfpng文件。我正在使用Batik来做这件事。我的代码如下:

代码语言:javascript
复制
Transcoder transcoder = new PDFTranscoder();
TranscoderOutput transcoderOutput = new TranscoderOutput(new FileOutputStream(new File(outputFilePath + "\\" + outputFileName + ".pdf")));
transcoder.transcode(transcoderInput, transcoderOutput);

但是,我得到了以下异常:

代码语言:javascript
复制
Exception in thread "main" org.apache.batik.transcoder.TranscoderException: null
Enclosed Exception:
Content is not allowed in prolog.
    at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:226)
    at org.apache.batik.transcoder.image.ImageTranscoder.transcode(ImageTranscoder.java:92)
    at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:142)
    at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:156)
    at com.we.poc.svgConverterdemo.conv.POC.main(POC.java:35)
Caused by: org.apache.batik.bridge.BridgeException: Content is not allowed in prolog.
    at org.apache.batik.bridge.BridgeContext.getReferencedNode(BridgeContext.java:788)
    at org.apache.batik.bridge.BridgeContext.getReferencedElement(BridgeContext.java:804)
    at org.apache.batik.bridge.PaintServer.convertURIPaint(PaintServer.java:365)
    at org.apache.batik.bridge.PaintServer.convertPaint(PaintServer.java:273)
    at org.apache.batik.bridge.PaintServer.convertFillPaint(PaintServer.java:242)
    at org.apache.batik.bridge.PaintServer.convertFillAndStroke(PaintServer.java:160)
    at org.apache.batik.bridge.SVGShapeElementBridge.createShapePainter(SVGShapeElementBridge.java:117)
    at org.apache.batik.bridge.SVGDecoratedShapeElementBridge.createFillStrokePainter(SVGDecoratedShapeElementBridge.java:58)
    at org.apache.batik.bridge.SVGDecoratedShapeElementBridge.createShapePainter(SVGDecoratedShapeElementBridge.java:84)
    at org.apache.batik.bridge.SVGShapeElementBridge.buildGraphicsNode(SVGShapeElementBridge.java:91)
    at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:224)
    at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
    at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219)
    at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
    at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219)
    at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
    at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219)
    at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
    at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219)
    at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
    at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219)
    at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
    at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219)
    at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
    at org.apache.batik.bridge.GVTBuilder.build(GVTBuilder.java:141)
    at org.apache.batik.bridge.SVGImageElementBridge.createSVGImageNode(SVGImageElementBridge.java:697)
    at org.apache.batik.bridge.SVGImageElementBridge.createImageGraphicsNode(SVGImageElementBridge.java:296)
    at org.apache.batik.bridge.SVGImageElementBridge.buildImageGraphicsNode(SVGImageElementBridge.java:179)
    at org.apache.batik.bridge.SVGImageElementBridge.createGraphicsNode(SVGImageElementBridge.java:121)
    at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:213)
    at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
    at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219)
    at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
    at org.apache.batik.bridge.GVTBuilder.build(GVTBuilder.java:82)
    at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:208)
    ... 4 more
EN

回答 1

Stack Overflow用户

发布于 2020-11-01 22:29:16

从堆栈跟踪来看,一些填充定义似乎引用了外部文件。仔细查看文件,确保它是valid XML

org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:142)上的

..。由以下原因引起:

org.apache.batik.bridge.BridgeException: prolog中不允许包含内容。

在org.apache.batik.bridge.BridgeContext.getReferencedNode(BridgeContext.java:788)

在org.apache.batik.bridge.BridgeContext.getReferencedElement(BridgeContext.java:804)

在org.apache.batik.bridge.PaintServer.convertURIPaint(PaintServer.java:365)

在org.apache.batik.bridge.PaintServer.convertPaint(PaintServer.java:273)

在org.apache.batik.bridge.PaintServer.convertFillPaint(PaintServer.java:242)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64626238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档