蜡染SVG转换为PDF-PDFTranscoder-页面大小A4

2020年2月29日 18点热度 0条评论

我使用Apache Batik成功地将SVG文件转换为PDF。

以下代码用于生成PDF:

import org.apache.fop.svg.PDFTranscoder;
import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;
...

File svgFile = new File("./target/test.svg");
...

PDFTranscoder transcoder = new PDFTranscoder();
try (FileInputStream fileInputStream = new FileInputStream(svgFile); FileOutputStream fileOutputStream = new FileOutputStream(new File("./target/test-batik.pdf"))) {
    TranscoderInput transcoderInput = new TranscoderInput(fileInputStream);
    TranscoderOutput transcoderOutput = new TranscoderOutput(fileOutputStream);
    transcoder.transcode(transcoderInput, transcoderOutput);
}

现在,我想影响生成的PDF的页面大小,以便获得A4的页面大小。我该怎么办?

我尝试了一些关键提示,但没有效果。

解决方案如下:

我最近也遇到过同样的问题。这可能无法完全解决您的问题,但是我至少能够使用以下Groovy(几乎Java)代码生成具有正确页面长宽比(在这种情况下为美国字母大小)的PDF:

...

TranscoderInput transcoderInput = new TranscoderInput(fileInputStream)
TranscoderOutput transcoderOutput = new TranscoderOutput(fileOutputStream)
PDFTranscoder transcoder = new PDFTranscoder()
int dpi = 100
transcoder.addTranscodingHint(PDFTranscoder.KEY_WIDTH, dpi * 8.5 as Float)
transcoder.addTranscodingHint(PDFTranscoder.KEY_HEIGHT, dpi * 11 as Float)
transcoder.transcode(transcoderInput, transcoderOutput)

希望这可以帮助。