You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Linux命令行按指定物理尺寸(厘米)将SVG转PDF?

Linux命令行实现SVG转指定尺寸带边距的PDF

核心思路

你的SVG通过viewBox="-1 -1 2 2"定义了实际内容的坐标系(宽高均为2单位),我们需要忽略SVG内部的width/height参数,直接基于viewBox渲染内容,再将其精准缩放并放置到PDF的指定位置。

解决方案(使用Inkscape)

Inkscape是Linux下处理SVG的首选工具,支持精准控制导出参数,完全满足需求。

1. 安装Inkscape(若未安装)

sudo apt update && sudo apt install inkscape

2. 执行导出命令

如果需要页面刚好容纳图像+2cm边距(页面尺寸19cm×19cm):

inkscape input.svg \
  --export-type=pdf \
  --export-area-viewbox \
  --export-width=150 \
  --export-height=150 \
  --export-pdf-page-size="190mmx190mm" \
  --export-pdf-x=20 \
  --export-pdf-y=20

如果需要使用A4页面(图像左上角距页面左、顶部各2cm):

inkscape input.svg \
  --export-type=pdf \
  --export-area-viewbox \
  --export-width=150 \
  --export-height=150 \
  --export-pdf-page-size="210mmx297mm" \
  --export-pdf-x=20 \
  --export-pdf-y=$((297 - 20 - 150))

参数解释

  • --export-area-viewbox:仅渲染viewBox定义的内容,完全忽略SVG内部的width/height参数,确保不受其干扰
  • --export-width=150/--export-height=150:设置导出图像尺寸为150mm(即15cm),与需求匹配
  • --export-pdf-page-size:指定PDF页面尺寸,190mmx190mm对应19cm×19cm(刚好容纳15cm图像+2cm四边边距),210mmx297mm为标准A4
  • --export-pdf-x=20:图像左上角距页面左侧20mm(2cm)
  • --export-pdf-y:图像左上角距页面顶部的距离(PDF坐标系原点在左下角,因此A4页面需计算297-20-150=127,确保顶部边距为2cm)

关于浏览器显示问题(补充说明)

Firefox显示200×200是因为SVG的viewBox宽高为2,浏览器默认将每个viewBox单位映射为100像素(width="100"对应2个viewBox单位,因此总宽度为200像素),但这对PDF导出无影响,我们的命令已完全绕过这个问题。

内容的提问来源于stack exchange,提问作者spraff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 09:43:41