分辨率为300dpi的1500px x 2633px(5x9)图像无法打印5英寸宽

时间:2019-05-10 16:48:01

标签: c# debugging scaling dpi zebra-printers

摘要

我的同事正在以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英寸),有时会稍长一些。

0 个答案:

没有答案