【问题标题】:Batch convert svg to pdf page size批量将 svg 转换为 pdf 页面大小
【发布时间】:2018-06-23 05:54:53
【问题描述】:

我有许多使用 inkscape 创建的 svg 文件,其中包含非标准字体的文本。据我了解,为了打印它们,我需要将文本转换为路径。看来,如果我只是使用

convert input.svg output.pdf

文本会自动转换为路径。这是正确的吗?

但是我的问题在于页面大小。输入 svg 的页面大小为 A5,横向。然而,转换后的 pdf 似乎在图像的右侧和底部被切割了大约 5% 的图像宽度/高度。

这是为什么呢?我该如何解决?

【问题讨论】:

  • 关于您的第一个问题:您想要将文本转换为路径并且它们转换为路径。那么为什么要问这个问题呢? (“将文本转换为路径”并不是打印的绝对要求,但您的打印提供商可能会提出要求。)
  • @usr2564301:这不是一个真正的问题。但是我注意到不同的转换器处理这个不同。显然“转换”(来自 imagemagick)确实将它们转换为路径,而 rsvg-convert 没有。我只是想确保提出的任何方法都会做两件事:1)将文本转换为路径,2)解决我的输出大小问题。
  • 如何检查输出大小?以毫米为单位的结果是多少?
  • @usr2564301:对于 pdf,在 evince,在“属性”中它告诉我“10.33 × 7.28 英寸”。它显然太小了,因为原始图像几乎填满了 a5 页面的所有内容,但在转换后的 pdf 中,图像的一部分丢失/裁剪。
  • Imagemagick 是一个光栅图像处理器。它将 svg 转换为光栅像素,然后将该光栅图像包含在 pdf 矢量外壳中。所以你失去了你的矢量路径,因为它们变成了像素。如果您想在 PDF 中保留矢量路径,我认为 Imagemagick 不是这项工作的工具。

标签: pdf svg converter inkscape


【解决方案1】:

只要您的系统上有 Inkscape,ImageMagick convert 实际上会将 PDF 导出委托给 Inkscape。可以直接在命令行中使用

inkscape -zA output.pdf input.svg

引用man:

使用的字体是子集和嵌入的。

有一些选项可以操作导出区域。 -C 显式设置页面区域,-D 绘图边界框。

您甚至可以通过使用保留 SVG 格式

inkscape -Tl output.svg input.svg

这会将文本转换为路径。

最后,由于你必须批处理多个文件,你应该打开一个 shell

inkscape --shell

一次性处理所有文件。否则,每个文件的 inkscape 启动时间将是 1-3 秒。比如:

ls -1 *.svg | awk -F. \
    '{ print "-AC " $1 ".pdf" $0 }
    END { print "quit" }' | \
    inkscape --shell

【讨论】:

  • 谢谢。使用inkscape 的转换按预期工作,转换为pdf 和png。还是不明白为什么imagemagick“convert”和“rsvg-convert”的大小有问题。
  • 只是一种预感:如果宽度/高度不是以 px 表示,而是以 in、cm 或其他实际尺寸表示,它们将是 Inkscape 配置的转换因子,而不是系统范围的转换因子。
  • 这很可能就是它。我在 svg 中以 mm 为单位指定了宽度/高度。在这种情况下,我将如何匹配转换因子?
  • 我认为inkscape中没有“重置”-您必须将设置->界面->缩放校正到系统设置的数量(对不起,无法告诉shell命令把它从我的帽子上拿下来。)
猜你喜欢
  • 2017-09-22
  • 2011-06-25
  • 2012-12-26
  • 2019-11-24
  • 2013-07-29
  • 2014-06-06
  • 2012-02-21
  • 2013-06-29
  • 2011-05-06
相关资源
最近更新 更多