让我解释一下这个问题,我陷入了困境
如果我从PDF Creator等虚拟打印机的打印首选项对话框或任何允许更改此设置的打印机更改dpi设置,然后设置如下代码的断点:
PrintDialog printDialog = new PrintDialog();
if ((bool)printDialog.ShowDialog().GetValueOrDefault())
{
System.Printing.PrintCapabilities capabilities = printDialog.PrintQueue.GetPrintCapabilities(printDialog.PrintTicket);
...... insert breakpoint here
}
我可以看到属性printDialog.PrintTicket.PageResolution.X; printDialog.PrintTicket.PageResolution.Y正确更改printDialog.PrintTicket.PageMediaSize.Width和printDialog.PrintTicket.PageMediaSize.Height不改变尽管打印机分辨率改变...纵向模式A4纸将始终具有PageMediaSize.Height = 1122.5196850393702和PageMediaSize.Width = 793.70078740157476无论在哪个分辨率之前设置.....对于WPF,这些尺寸的单位大小设置为1/96英寸,但是当屏幕上显示为Ok时,因为默认屏幕分辨率为96 dpi打印机的另一面是错误的,因为它具有不同的分辨率,换句话说,如果我找不到告诉WPF打印机的单位尺寸不是1/96的方法,则认为纸张的高度和宽度是只读属性英寸,但例如1/300英寸(如果在打印机上我以前设置300 dpi),绝对没有办法以高于96dpi的分辨率打印
最后一点,在我的具体情况下,我无法使用RenderTargetBitmap,然后调整所有尺寸以匹配打印机的纸张高度和宽度设置,因为我正在打印高清条形码图像,这会导致图像重新缩放,从而导致条形码无法读取最终论文,因为我创建它的目的是以300dpi的分辨率打印,没有调整大小将导致超出限制因为WPF告诉我打印机纸张尺寸错误的单位尺寸(1/96英寸),尽管真正的dpis prevoiusly设置在打印机上
希望能够澄清问题,
提前感谢,
戴夫