我遇到了一个SVG形状的问题,这些形状有一个笔划并试图让它们在firefox中打印。
这是最简单的例子:
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
<rect x="0" y="0" rx="15" ry="15" width="300" height="400" style="stroke:black;stroke-width:5;" fill="black" />
<circle id="FirstCircle" cx="50" cy="50" r="30" stroke="black" stroke-width="2" fill="white" style="opacity:0.75;"/>
<circle id="SecondCircle" cx="50" cy="150" r="30" fill="white" style="opacity:0.75;"/>
</svg>
当我尝试打印时,第一个形状会做两件事之一:
没有笔划的第二个形状按预期显示,预期显示。
在屏幕上显示时,按预期显示预期的位置。当我尝试打印时,问题就出现了。
我尝试过不同比例因子(50% - 100%)和默认收缩以适应。
以下是我尝试打印时的内容:
这是定义的行为还是有人知道如何纠正这个问题?
我不喜欢这个形状上的笔触,并且可以轻松地将形状分层以获得相同的效果,但是很高兴知道为什么会这样。
修改
罗伯特·朗森指出这似乎是一个火狐漏洞。提交了一份报告here,他们正在调查。
答案 0 :(得分:0)
您需要指定width
元素的height
和svg
来解决此问题:
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="300" height="400">
<rect x="0" y="0" rx="15" ry="15" width="300" height="400" style="stroke:black;stroke-width:5;" fill="black" />
<circle id="FirstCircle" cx="50" cy="50" r="30" stroke="black" stroke-width="2" fill="white" style="opacity:0.75;"/>
<circle id="SecondCircle" cx="50" cy="150" r="30" fill="white" style="opacity:0.75;"/>
</svg>