我正在编写一个WPF应用程序来获取和保存打印配置文件(以及使用此打印配置文件打印文档的另一个应用程序)。
它工作正常,除非我尝试使用Adobe PDF Creator时有一台自定义尺寸的打印机(如800mm×1200mm)。然后打印票证中的PageMediaSize Width和Height为空。
这是我用来获取PrintTicket的代码:
PrintDialog pd = new PrintDialog();
if (pd.ShowDialog() == true)
{
PrintDocument doc = new PrintDocument();
doc.PrintPage += (o, a) =>
{
PrintQueue pq = pd.PrintQueue;
PrintTicket ticket = pd.PrintTicket;
...
a.Cancel = true;
};
doc.Print();
}
PrindDialog包含页面的正确宽度和高度,但如果我尝试使用PrintTicket打印文档,它会崩溃,说明PageMediaSize不能包含空值。
任何人都知道如何获得有效的PrintTicket?
答案 0 :(得分:2)
这听起来像Adobe PDF Creator的驱动程序有问题。驱动程序提供所有尺寸的值,因此如果出现问题,您可能需要联系打印机/驱动程序的制造商。
解决这个问题的方法是找出尺寸(800mm x 1200mm)并假设分辨率为1/96英寸。然后进行转换:
Width: ( 800mm) / (25.4 mm/in) / (1/96in) = 3023.62
Height: (1200mm) / (25.4 mm/in) / (1/96in) = 4535.43
有了这些价值观,你可以说:
pd.PrintTicket.PageMediaSize = new PageMediaSize(Width, Height);