【发布时间】:2020-06-09 17:20:57
【问题描述】:
我正在努力寻找一种打印宽 SVG 图像的方法。这是一个常见问题,所以让我解释一下我的具体问题。
图像很宽,所以我需要将它(海报样式)平铺在大约 5 或 6 张 A4 纸上(实际数量并不重要)。我的第一个问题是,在 Windows 下,我的 Firefox 或 Chrome 浏览器中的默认打印对话框不允许我缩放图像高度以适应页面高度,同时还将图像宽度分散到多个页面。
其他人建议使用 Inkscape 转换为 PDF 格式,因为 Acrobat 阅读器中的“打印”对话框对平铺有更好的支持。好吧,确实如此,但 Inkscape 不处理嵌入式图像(例如 PNG 或 JPG)。更糟糕的是,它会产生巨大的方形错误标记,上面写着“找不到链接的图像”。这些也保留在生成的 PDF 中,使其无用。
有很多在线工具声称可以将 SVG 转换为 PDF。我尝试了一些,但没有一个能够处理嵌入式图像。他们只是被丢弃了。
所以,我基本上是在寻找将宽 SVG 图像打印到一系列水平页面上的任何方法,并且保留任何嵌入的 PNG/JPG 图像。
[编辑]
部分在线结果:
zamzar -- 图片被丢弃
cloudconvert -- 简单地使用inkscape
convertio -- 最好的,但在图像上忽略不透明度
online-convert.com -- 图片被丢弃
pdfresizer -- 简单地使用了 inkscape
freefileconvert -- 简单地使用了 inkscape
onlineconvertfree -- 基本 SVG 失败
pdfaid -- 基本 SVG 严重失败
[编辑 2] 下面是几行代码,显示了基于 Internet 的嵌入式 PNG 参考之一。这个设计用于在随后的 SVG 形状下方提供微弱的背景图像。因此不透明度为 12%。
<defs>
<pattern id="img2" width="50%" height="100%" >
<image xlink:href="https://clipartart.com/images/tree-branch-clipart-png-4.png" x="0" y="0" width="50%" height="100%" />
</pattern>
</defs>
<rect width="100%" height="100%" fill="url(#img2)" fill-opacity="0.12" />
【问题讨论】:
-
当 Inkscape 显示“未找到链接图像”时,可能就是这样 - 你确定它们是嵌入的吗?您可以共享文件或其中的一部分吗?此外,Inkscape 使用的库中存在一个错误,导致无法读取特定的 jpg 图像 (gitlab.com/inkscape/inbox/issues/964)。 (顺便说一句。知道谁在使用 Inkscape 即服务很有趣!)。我不知道它也会影响 png 图像,但谁知道...
-
图片很好,可以被浏览器等其他软件引用。我在 Inkscape 网站上发现了一些“小字体”,上面写着“出于安全原因”,不支持基于 Internet 的图像。这听起来有点像围绕 SVG 的 Wordpress 危言耸听。如果它在我的机器上运行,并且我创建了引用,那么这是我的责任。这真的很烦人,无论是在实践中还是原则上。
-
是的,这确实是故意的。不是每个人都自己创建这些文件。
-
但是你应该可以关闭它,Moni。我认为没有理由完全破坏视图并将其保留在保存的 PDF 中,而不是仅仅丢弃这些图像。
-
对于错误报告和功能请求,请使用inkscape.org/report,@ACProctor。