我使用Apache FOP / Batik将SVG转换为PDF。运行以下代码java命令行程序时,一切都运行良好:
public byte[] convert(String svg) throws TranscoderException, java.io.IOException {
ByteArrayInputStream instream = new ByteArrayInputStream(svg.getBytes(StandardCharsets.UTF_8));
ByteArrayOutputStream outstream = new ByteArrayOutputStream(50 * 1024);
TranscoderInput input = new TranscoderInput(instream);
TranscoderOutput output = new TranscoderOutput(outstream);
Transcoder transcoder = new PDFTranscoder();
transcoder.transcode(input, output);
return outstream.toByteArray();
}
但是,从JRuby(1.7)上运行的ruby应用程序调用的相同代码会将每个文本字符包装在灰色框中。 jruby和普通java程序都在同一台机器上运行并使用相同的jvm(Oracle 8,只安装了jvm)。我验证了它不是输入/输出问题,改变了从文件中读取svg并将结果写回来的方法。
任何可能导致此行为的想法?
答案 0 :(得分:2)
当log4j.logger.org.apache.fop记录器设置为DEBUG时,Apache FOP会添加这些框,可能是出于某种诊断目的。关闭此记录器以删除边框。
我在Batik论坛上找到答案: https://mail-archives.apache.org/mod_mbox/xmlgraphics-batik-users/201601.mbox/browser