在JRuby下使用Batik / FOP SVG到PDF转换时的边框字符

时间:2016-01-07 11:54:30

标签: java svg jruby apache-fop

我使用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并将结果写回来的方法。

任何可能导致此行为的想法?

Characters with jruby

1 个答案:

答案 0 :(得分:2)

当log4j.logger.org.apache.fop记录器设置为DEBUG时,Apache FOP会添加这些框,可能是出于某种诊断目的。关闭此记录器以删除边框。

我在Batik论坛上找到答案: https://mail-archives.apache.org/mod_mbox/xmlgraphics-batik-users/201601.mbox/browser