Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将svg批量转换为pdf页面大小_Pdf_Svg_Converter_Inkscape - Fatal编程技术网

将svg批量转换为pdf页面大小

将svg批量转换为pdf页面大小,pdf,svg,converter,inkscape,Pdf,Svg,Converter,Inkscape,我有许多使用inkscape创建的svg文件,其中包含非标准字体的文本。据我所知,为了打印它们,我需要将文本转换为路径。看来如果我用 convert input.svg output.pdf 文本将自动转换为路径。这是正确的吗 然而,我的问题是页面大小。输入svg的页面大小为A5,横向。然而,转换后的pdf似乎在图像的右侧和底部被剪切了图像宽度/高度的5%左右 为什么呢?如何修复它?只要系统上有Inkscape,ImageMagickconvert实际上会将PDF导出委托给Inkscape。您

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

convert input.svg output.pdf
文本将自动转换为路径。这是正确的吗

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


为什么呢?如何修复它?

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

inkscape -zA output.pdf input.svg
引自:

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

有一些选项可以操作导出区域
-C
明确设置页面区域,
-D
图形边界框

您甚至可以使用

inkscape -Tl output.svg input.svg
将文本转换为路径

最后,由于您必须批处理多个文件,因此应该使用

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

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

关于您的第一个问题:您希望文本转换为路径,并且它们被转换为路径。那么为什么要问这个问题呢?(“将文本转换为路径”不是打印的绝对要求,但您的打印提供商可能会问。)@usr2564301:这不是一个真正的问题。但是我注意到不同的转换器处理这个问题的方式不同。显然,“convert”(来自imagemagick)会将它们转换为路径,而
rsvg convert
不会。我只想确保无论提出什么方法,都会做两件事:1)将文本转换为路径,2)修复我的输出大小问题。如何检查输出大小?以毫米为单位的结果是什么?@usr2564301:对于pdf,在“属性”中,它告诉我“10.33×7.28英寸”。它显然太小了,因为原始文件中的图像几乎占据了a5页面的所有部分,但在转换后的pdf中,图像的一部分丢失/被裁剪。Imagemagick是一种光栅图像处理器。它将svg转换为光栅像素,然后将光栅图像封装在pdf矢量外壳中。所以你失去了向量路径,因为它们变成了像素。我不认为Imagemagick是这项工作的工具,如果你想保持你的PDF矢量路径。谢谢。使用inkscape进行转换的效果与预期一样,既可以转换为pdf格式,也可以转换为png格式。仍然不明白为什么imagemagick“convert”和“rsvg convert”的大小有问题。只是一种预感:如果宽度/高度不是以px表示的,而是以in、cm或其他实际大小表示的,那么它们将使用Inkscape配置的转换因子,而不是系统范围的转换因子。很可能就是这样。我在svg中以mm为单位指定了宽度/高度。在这种情况下,我如何匹配转换因子?我认为inkscape中没有“重置”功能-您必须将设置->界面->缩放校正设置为系统设置的值(抱歉,无法告诉shell命令将其从我的帽子上去掉。)