【发布时间】:2015-12-30 23:08:59
【问题描述】:
我有一个 FabricJS 画布,必须将其转换为与印刷生产的精确分数英寸相匹配的 PDF。根据我收到的其他问题,我的打印机是大幅面打印机,实际上需要这个/能够打印到精确的小数点,如下所示:
Width (Inches): 38.703111
Height (Inches): 25.999987
由于要求是300的DPI,所以我通过将宽度和高度乘以300得到像素如下:
38.703111 inches x 300 = 11610.9333 px
25.999987 inches x 300 = 7799.9961 px
有了这些测量结果,我创建了一个 FabricJS 画布,用户可以对其进行编辑然后转换为图像(稍后需要弄清楚如何将其转换为 PDF 服务器端/怀疑 node.js 与 pdfkit 模块) .
由于页面上不能使用 11610 x 7799px 的画布,所以我将画布的大小设置如下:
Width: 650px
Height: 436.6571863 (Orginal Height * New Width / Orginal Width = new height)
这是我的 Canvas 的外观 (HTML) 和相应的 JavaScript 代码来呈现它:
<canvas id="c" width="650" height="436.6571863" style="border:1px solid"></canvas>
var canvas = new fabric.Canvas('c', {});
用户可以编辑画布,然后将其转换为图像,但这就是问题所在。我尝试使用 17.86297431 的乘数通过 FabricJS 的 toDataURL 方法缩放画布(原始像素宽度/像素新宽度和像素原始高度/像素新高度都等于 17.86297431 的乘数)如下:
var dataURL = canvas.toDataURL({
format: 'png',
multiplier: 17.86297431
})
document.write('<img src="' + dataURL + '"/>');
但是,一旦缩放,我的输出图像的宽度在 11610 处显示正确,但高度在 7788 处关闭,而应该是 7799。当我检查时,此输出不显示分数,而是显示整个像素元素。
我的问题是,我怎样才能让我的 FabricJS Canvas 正确放大到像素(或英寸),以便我的 PDF(从我的 PNG 转换而来)具有正确的尺寸?这是不尊重像素分数的问题吗/我该怎么办?
【问题讨论】:
标签: javascript canvas fabricjs