我在浏览器中有一个代表平面的SVG文件,我需要以特定比例打印输出。我正在使用SVG.js来操纵SVG内容,但是我找不到正确的viewport viewbox设置的组合以满足我的需求。带刻度打印的SVG
我知道的是SVG源文件的大小。 通过x和y坐标,我计算了一个距离,以找到正确的“屏幕比例”,使其与计划中的1cm像素数匹配。
对于印刷,我需要尊重“具体比例”,例如1/50。 所以我试图通过使用“屏幕比例”和SVG文件大小来获得真正的平面尺寸。然后,我在总大小上应用了1/50(0.02)的比例。然后我试图以72dpi的分辨率猜测一些像素。
这里是我的代码:
var svgNode = SVG(planNode);
var totalWidthCm = (svgNode.width().replace('px', '') * screenScale * printScaleVal);
var totalHeightCm = (svgNode.height().replace('px', '') * screenScale * printScaleVal);
var totalWidthPx = totalWidthCm * 0.393701 * 72;
var totalHeightPx = totalHeightCm * 0.393701 * 72;
svgNode.height(totalHeightPx + 'px');
svgNode.width(totalWidthPx + 'px');
svgNode.viewbox('0', '0', '1000', '600');
的SVG输出中:
<svg xmlns:cc="http://creativecommons.org/ns#" xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg" version="1.1" width="495.79113386880005px" height="387.87611496479997px"
preserveAspectRatio="xMinYMin slice" id="plan" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:svgjs="http://svgjs.com/svgjs" viewBox="0 0 496 388">
.....
</svg>
事实是,我不知道如何设置视口和视框来显示全部或切片缩放适应SVG,以打印A4或A3格式。
哦,亲爱的SVG专家,希望我的瓶子将达到你:d
“你不能依靠这样一个事实,即屏幕上的X像素在打印时将是X像素,你需要打印一些样本并测量打印的SVG以计算比例。 “这实际上是一个很大的问题,通过Web应用程序可以访问客户的计划,但每个客户都有自己的打印机,有许多专业人员需要打印地图或其他东西, m好奇地知道他们如何在规模打印.. – uncleBounty
您可能需要在应用程序中进行某种校准过程。 –