java - Apache Batik SVG 转 PDF - 输出 PDF 大小不正确

标签 java pdf svg pdfbox batik

我正在尝试将 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 文件时使用 DPI 96。这使得输出文件比 PDFBox 生成的主文档稍小。要将 Batik 切换到默认支持 PDFBox 的 DPI,我们必须将像素到毫米的转换从 96dpi 更改为 72dpi。

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

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

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

关于java - Apache Batik SVG 转 PDF - 输出 PDF 大小不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47504807/

相关文章:

java - 将字符串作为输入传递到 Java Runtime.exec()

javascript - 仅生成一张电子表格的 PDF

html - 多层 <svg> 多边形 - 不起作用

svg - github svg 根本不渲染

python - 使用 wkhtmltopdf 在 PDF 中重用相同的 SVG

java - 实现 Blinn–Phong 着色模型时出现问题

java - orphanRemoval=true 在 JPA 2.0 中如何工作

xml - 如何将外部 OCR 嵌入到现有 PDF 中?

java - Admob 不支持 webview

javascript - 下载pdf文件时如何设置pdf文件的名称?