第 1 部分:生成 50 毫米的打印绘图需要多少画布像素?
打印机通常以每英寸 300 像素进行打印。
以毫米为单位:300ppi / 25.4 毫米英寸 = 每毫米 11.81 像素。
因此,如果您想打印 50 毫米的绘图,您将计算所需的像素大小,如下所示:
50mm x 11.81ppm = 590.5 像素(591 像素)
然后将画布大小调整为 591 像素(假设为正方形),如下所示:
// resize the canvas to have enough pixels to print 50mm drawing
c.width=591;
c.height=591;
第 2 部分:将画布导出为图像
要打印画布,您需要将画布转换为可以使用的图像context.toDataURL
.
// create an image from the canvas
var img50mm=new Image();
img50mm.src=canvas.toDataURL();
第 3 部分:将导出的图像转换为正确的打印分辨率
context.toDataURL
始终创建每英寸 72 像素的图像。
打印机通常以更高分辨率打印,可能每英寸 300 像素。
因此,为了使导出的图像能够在页面上正确打印,必须将导出的图像从 72ppi 转换为 300ppi。
The 图像魔术师库可以进行转换:http://www.imagemagick.org/ http://www.imagemagick.org/
它是一个服务器端工具,因此您必须将导出的图像从服务器上退回(可能使用 AJAX 来回传送图像)。
ImageMagick 适用于 PHP、IIS 和其他服务器环境。
下面是一个使用 PHP 转换图像分辨率并将转换后的图像回显给调用者的示例:
// Assume you've uploaded the exported image to
// "uploadedImage.png" on the server
<?php
$magic = new Imagick();
$magic->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH);
$im->setImageResolution(300,300);
$im->readImage("uploadedImage.png");
$im->setImageFormat("png");
header("Content-Type: image/png");
echo $im;
?>
最后一部分:打印出来!
您从服务器收到的转换后的文件将在 300ppi 打印机上打印 50 毫米方形图像。