摘要
我的同事正在以300dpi的分辨率保存从报表创建的图像,并试图将其打印到Zebra ZT420 300dpi打印机上。打印机中的色带/介质始终为5英寸宽,但长度(高度)可以更改。当他去打印图像时,它在打印输出上会大大放大,并且会丢失大部分图像。由于默认情况下打印机的分辨率为300dpi,因此图像如何正确打印。
尝试
他尝试了此在线找到的代码。有趣的是,如果他将m.Width硬编码为341,则可以打印5英寸宽,但是图像看起来缩放或质量低于应有的水平。默认情况下,e.PageBounds是宽度(500)和高度(600),可能是错误的,并且我认为它们是从打印机驱动程序设置中拉出的。
System.Drawing.Image img = System.Drawing.Image.FromFile(@"C:\myimage.jpg");
//Adjust the size of the image to the page to print the full image without loosing any part of it
Rectangle m = e.PageBounds;
if ((double)img.Width / (double)img.Height > (double)m.Width / (double)m.Height) // image is wider
{
m.Height = (int)((double)img.Height / (double)img.Width * (double)m.Width);
}
else
{
m.Width = (int)((double)img.Width / (double)img.Height * (double)m.Height);
}
e.Graphics.DrawImage(img, m);
预期行为
任何以300dpi生成的图像都应该能够在5英寸宽的介质上正确打印。宽度是固定的(1500像素,也就是5英寸),但高度会有所不同(2633像素,即9英寸),有时会稍长一些。