简体   繁体   English

使用蜡染将 svg 转换为图像时出现 TranscoderException

[英]TranscoderException when converting svg to image using Batik

I am trying to convert svg content into a pdf or png file.我正在尝试将svg内容转换为pdfpng文件。 I am using Batik to do this.我正在使用蜡染来做到这一点。 My code is as follows:我的代码如下:

Transcoder transcoder = new PDFTranscoder();
TranscoderOutput transcoderOutput = new TranscoderOutput(new FileOutputStream(new File(outputFilePath + "\\" + outputFileName + ".pdf")));
transcoder.transcode(transcoderInput, transcoderOutput);

However, I get the below exception:但是,我收到以下异常:

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

From your stack trace, it looks like some fill definition references an external file.从您的堆栈跟踪来看,某些填充定义似乎引用了外部文件。 Look at that file closely and make sure it is valid XML :仔细查看文件并确保它是有效的 XML

at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:142)在 org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:142)
... Caused by: ... 引起:
org.apache.batik.bridge.BridgeException: Content is not allowed in prolog. org.apache.batik.bridge.BridgeException:序言中不允许出现内容。
at org.apache.batik.bridge.BridgeContext.getReferencedNode(BridgeContext.java:788)在 org.apache.batik.bridge.BridgeContext.getReferencedNode(BridgeContext.java:788)
at org.apache.batik.bridge.BridgeContext.getReferencedElement(BridgeContext.java:804)在 org.apache.batik.bridge.BridgeContext.getReferencedElement(BridgeContext.java:804)
at org.apache.batik.bridge.PaintServer.convertURIPaint(PaintServer.java:365)在 org.apache.batik.bridge.PaintServer.convertURIPaint(PaintServer.java:365)
at org.apache.batik.bridge.PaintServer.convertPaint(PaintServer.java:273)在 org.apache.batik.bridge.PaintServer.convertPaint(PaintServer.java:273)
at org.apache.batik.bridge.PaintServer.convertFillPaint(PaintServer.java:242)在 org.apache.batik.bridge.PaintServer.convertFillPaint(PaintServer.java:242)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM