使用ImageMagick调整SVG并将其导出为PDF

时间:2017-10-04 14:02:48

标签: image-processing svg imagemagick fabricjs

我想将此 SVG转换为PDF ,其尺寸可以扩展到当前尺寸 x10 ,而不会降低图片的质量。 PDF也应该 300 PPI 。我怎样才能实现输出?

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="248.1" height="350.7" viewBox="0 0 248.1 350.7" xml:space="preserve">
<desc>Created with Fabric.js 1.7.19</desc>
<defs>
</defs>
<g transform="translate(51.2 34.1) scale(0.1 0.1)">
<image xlink:href="./cat.jpg" x="-512" y="-341" style="stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(0,0,0); fill-rule: nonzero; opacity: 1;" width="1024" height="682" preserveAspectRatio="none"></image>
</g>
</svg>

enter image description here

此SVG来自fabricjs toSVG()代码。我可以使用fabricjs调整它的大小,但我想知道是否可以这样做以及如何使用ImageMagick。

1 个答案:

答案 0 :(得分:2)

ImageMagick是一个针对光栅图像的程序套件。你所拥有的是一种混合了矢量和栅格内容的格式,用于输入和输出。

ImageMagick可以处理,但只能通过需要安装的其他程序来处理:

  • 使用Inkscape或librsvg
  • 从SVG导入
  • 使用ghostscript导出为PDF

你可以切断中间人。 Inkscape虽然主要是SVG编辑器GUI,但也有一个命令行模式,例如用于导出任务。您可以通过将根元素上的heightwidth值与您的比例相乘来扩展SVG - 不要更改viewBox属性:

<svg width="2481" height="3507" viewBox="0 0 248.1 350.7" ...>

或者,如果您知道所需页面的目标大小,则可以设置它们。即使宽高比不合适,您的内容也会适合页面大小。例如A4页面:

<svg width="210mm" height="297mm" viewBox="0 0 248.1 350.7" ...>

然后执行Inkscape:

inkscape --without-gui --export-pdf=out.pdf in.svg

图片按原样嵌入,因此您不会失去分辨率。