首页 > 解决方案 > 使用嵌入的 PNG/JPG 打印宽 SVG 图像

问题描述

我正在努力寻找一种打印宽 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" />

标签: svgprintinginkscape

解决方案


我有时间进一步试验这一点(因此浪费了打印纸)。

1) Inkscape 出于“安全原因”故意不支持 Internet 图像引用(例如 http)。如前所述,它在加载的 SVG 视图中放置了一个可怕的错误标记,我发现无法编辑它。因此,它可以保存在任何 PDF 版本中。

2)如果我下载图像的本地副本并将它们的 http:// 引用更改为等效的 file:///(是的,3 个斜线),那么它们就会被接受。

3) 这允许保存 PDF 副本,但如果任何图像具有不透明度(例如背景图像),则该图像会丢失并且它在 PDF 中是完全不透明的。这可能是转换问题或 PDF 限制——我不知道。

4)由于我有图像的本地副本,因此可以更改它们以实现“在源头”所需的任何模糊。

5) Acrobat 打印对话框有一个海报选项,用于平铺宽图像的页面。确保没有添加“剪切标记”或“标签”,您可以设置一个“平铺比例”,将高度保持在一页内,并将其分布在宽度所需的尽可能多的页面上。在缩放的基础上,它会选择风景/肖像本身,并忽略您自己的任何选择。

那么,有问题吗?是的,Acrobat 的“重叠”设置是一个谜,它会在输出的一个或两个相邻工作表上留下薄薄的白边。我无法将此页边距的宽度或一张或两张纸上的外观与此设置相关联。

通过首选项按钮,我可以进入正常的打印机首选项对话框,我可以在其中请求“无边框打印”。而不是解决问题,这只会使相关性更加神秘。


推荐阅读