让我解释一下这个问题,我陷入了困境
如果我从虚拟打印机(如 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 英寸,但什么时候在屏幕上可以,因为默认屏幕分辨率是 96 dpi打印机的另一面是错误的,因为它具有不同的分辨率,
最后一点,在我的具体情况下,我不能使用 RenderTargetBitmap 然后调整所有大小以匹配打印机的纸张高度和宽度设置,因为我正在打印高清条形码图像,它会导致图像重新缩放,导致条形码在最终纸张上不可读,因为我创建它的目的是使用 300dpi 的分辨率进行打印,如果不调整大小将导致超出范围,因为 WPF 告诉我打印纸尺寸的单位尺寸错误(1/96 英寸),尽管之前设置了真正的 dpi打印机
希望已经足够澄清问题,
提前致谢,
戴夫