使用自定义页面大小的Adobe PDF Creator的PrintTicket的PageMediaSize的空值

时间:2014-06-05 12:48:02

标签: wpf pdf printing

我正在编写一个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?

1 个答案:

答案 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);