我想将此 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>
此SVG来自fabricjs toSVG()
代码。我可以使用fabricjs调整它的大小,但我想知道是否可以这样做以及如何使用ImageMagick。
答案 0 :(得分:2)
ImageMagick是一个针对光栅图像的程序套件。你所拥有的是一种混合了矢量和栅格内容的格式,用于输入和输出。
ImageMagick可以处理,但只能通过需要安装的其他程序来处理:
你可以切断中间人。 Inkscape虽然主要是SVG编辑器GUI,但也有一个命令行模式,例如用于导出任务。您可以通过将根元素上的height
和width
值与您的比例相乘来扩展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
图片按原样嵌入,因此您不会失去分辨率。