Java Apache Batik SVG到PDF-输出PDF大小不正确

Java Apache Batik SVG到PDF-输出PDF大小不正确,java,pdf,svg,pdfbox,batik,Java,Pdf,Svg,Pdfbox,Batik,我正在尝试将SVG文件转换为PDF,以便嵌入到另一个PDF文档中。我正在使用batik转码器,传入SVG的字节,并获取PDF的数据 我的主PDF文档和传递到转码器的SVG文件都具有以下维度: width="602.8" height="763.8" 但是,从SVG生成的输出PDF文件较小。因此,当嵌入到主文档中时,生成的SVGPDF不会像我预期的那样占用主PDF中的所有可用空间,因为它具有更小的维度。如何强制输出pdf与主文档/输入的SVG具有相同的维度,因此在进一步研究后,我找到了一个解决方

我正在尝试将
SVG
文件转换为
PDF
,以便嵌入到另一个
PDF
文档中。我正在使用batik转码器,传入
SVG
的字节,并获取
PDF
的数据

我的主PDF文档和传递到转码器的
SVG
文件都具有以下维度:

width="602.8" height="763.8"

但是,从
SVG
生成的输出
PDF
文件较小。因此,当嵌入到主文档中时,生成的
SVG
PDF不会像我预期的那样占用主PDF中的所有可用空间,因为它具有更小的维度。如何强制输出pdf与主文档/输入的SVG具有相同的维度,因此在进一步研究后,我找到了一个解决方案。我们使用PDFBox作为pdf操作工具,默认情况下,文档的DPI为72

另一方面,Batik在将SVG转换为PDF文件时使用96的DPI。这使得输出文件略小于PDFBox生成的主文档。要将蜡染切换到默认支持PDFBox的DPI,我们必须将像素到毫米的转换从96dpi更改为72dpi

我们可以向PDFTranscoder添加转码提示,如下所示:

transcoder.addTranscodingHint(PDFTranscoder.KEY_PIXEL_UNIT_TO_MILLIMETER,
(25.4f / 72f));

其中(25.4f/72f)等于72dpi。这将替换默认的96dpi(25.4f/96f)

pdf将以72 dpi呈现,但is pdf格式为vector。因此,您可以调整它的大小。质量是一样的