gpt4 book ai didi

java - Batik - 修改和保存 SVG 导致 XML 格式不正确

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:33 24 4
gpt4 key购买 nike

我正在尝试编辑现有的 SVG 并在之后使用 Batik 保存它(我需要不同的格式和 DOM 操作)。

我的工作:

  • Adobe Illustrator 源文件 (CS 4.0) 保存为 SVG 1.0,带有所有字形(两种嵌入字体)
  • 加载了 Batik(使用 SAXSVGDocumentFactory,源代码如下)
  • DOM-Modifications(即使没有修改也会出现问题)
  • 使用 SVGTranscoder 保存

转码后,我得到一个新的 SVG 文件,它充满了 XML,但无法在 Firefox 或 Illustrator 中正确呈现。

在 Firefox 中,我收到 XML 格式不正确的消息,例如,

<glyph horiz-adv-x="249" unicode=""/>

我的代码:

///////////////
// Load Template File (with embedded Fonts)
///////////////
File file = new File(SVGFilePath);
FileInputStream svgInputStream = new FileInputStream(file);

////////////////////
// Load SVG into DOM-Tree
////////////////////
String parser = XMLResourceDescriptor.getXMLParserClassName();
SAXSVGDocumentFactory factory = new SAXSVGDocumentFactory(parser);
Document doc = factory.createDocument(parser, svgInputStream);

//...

///////////////////////
// Generate Output File
///////////////////////
String savepath = "test.svg";
byte[] fileData = transcodeToSVG(doc);
FileOutputStream fileSave = new FileOutputStream(savepath);
fileSave.write(fileData);
fileSave.close();

我的转码代码:

public byte[] transcodeToSVG(Document doc) throws TranscoderException {

try {
//Determine output type:
SVGTranscoder t = new SVGTranscoder();

//Set transcoder input/output
TranscoderInput input = new TranscoderInput(doc);
ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
OutputStreamWriter ostream = new OutputStreamWriter(bytestream);
TranscoderOutput output = new TranscoderOutput(ostream);

//Perform transcoding
t.transcode(input, output);
ostream.flush();
ostream.close();

return bytestream.toByteArray();

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return null;
}

最佳答案

David Conrads 用 Unicode 字符提示我找到了解决方案:

我错过了文件的正确编码。

改变之后

OutputStreamWriter ostream = new OutputStreamWriter(bytestream);

OutputStreamWriter ostream = new OutputStreamWriter(bytestream, "UTF-8");

效果不错。

关于java - Batik - 修改和保存 SVG 导致 XML 格式不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26848258/

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