【问题标题】:WPF Printing : Unable to get printer supported PageMediaSizeWPF 打印:无法获得打印机支持的 ​​PageMediaSize
【发布时间】:2019-03-21 12:25:38
【问题描述】:

我正在开发 WPF 应用程序,但在打印方面遇到了一些问题。 PrintQueue.GetPrintCapabilities().PageMediaSizeCapability 集合没有打印机支持的所有 PageMediaSize。我正在使用 hp officejet 7610 驱动程序(支持 A3 PageMediaSize)。但是 PrintQueue.GetPrintCapabilities().PageMediaSizeCapability 集合没有 A3 PageMediaSize。因此,打印机使用其默认/选定的 PageMediaSize 打印页面。

例如,我有一个尺寸为 A3 (1122.5 * 1587.4) 的页面。我正在尝试在 A3 纸 (1122.5 * 1587.4) 中打印该页面,但仅打印区域 (796.8 * 1123.2)。

但是,我尝试为 PrintTicket 设置自定义 PageMediaSize,如下所示。

printDialog.PrintTicket.PageMediaSize = new PageMediaSize(PageMediaSizeName.ISOA3);

(或)

printDialog.PrintTicket.PageMediaSize = new PageMediaSize(PageMediaSizeName.ISOA3, 1122.5, 1587.4);

(或)

printDialog.PrintTicket.PageMediaSize = new PageMediaSize(1122.5, 1587.4);

尝试了所有其他与 A3 相关的 PageMediaSize(ISOA3、ISOA3Extra、ISOA3Rotated、OtherMetricA3Plus)。不幸的是,这不起作用。打印机忽略了我尝试设置的自定义纸张尺寸。我尝试了几个打印机驱动程序,结果都是一样的。

另外,我尝试过如下所示的 PrintQueue.MergeAndValidatePrintTicket,

PrintTicket pt = new PrintTicket();
pt.PageMediaSize = new PageMediaSize(PageMediaSizeName.ISOA3, 1122.5, 1587.4);
pt.PageMediaType = PageMediaType.None;
System.Printing.ValidationResult result = printDialog.PrintQueue.MergeAndValidatePrintTicket(printDialog.PrintQueue.DefaultPrintTicket, pt);
printDialog.PrintQueue.UserPrintTicket = result.ValidatedPrintTicket;
printDialog.PrintQueue.Commit();

不幸的是,这也不起作用。

最后,问题是如何将自定义的PageMediaSize设置为PrintTicket(或)如何获取打印机支持的所有PageMediaSize?谁能建议我们如何达到预期的效果?

【问题讨论】:

    标签: .net wpf printing printdialog printqueue


    【解决方案1】:

    您能否尝试以下代码以获取有关打印机的信息

    printQueue.GetPrintCapabilitiesAsXml() 
    

    问候,

    Keerthivasan R.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-07
      • 2020-11-15
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多