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

Apache Batik SVG to PDF - Output PDF is Incorrect Size

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

我的主要 PDF 文档和传递到转码器的 SVG 文件的尺寸均为:

width="602.8" height="763.8"

但是从 SVG 生成的输出 PDF 文件较小。因此,当嵌入到我们的主文档中时,生成的 SVG PDF 不会像我期望的那样占用我们主 PDF 中所有可用的 space,因为它的尺寸较小。如何强制输出 pdf 具有与主文档/输入相同的尺寸 SVG.

经过进一步研究,我找到了解决方案。我们使用 PDFBox 作为我们的 pdf 操作工具,默认情况下文档的 DPI 为 72。

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

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

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

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