【问题标题】:Why is my PrintDialog always opening "save as" and not print directly?为什么我的 PrintDialog 总是打开“另存为”而不是直接打印?
【发布时间】:2022-01-17 16:01:51
【问题描述】:

所以我有一个要打印的窗口。为此,我创建了一个打印对话框。看起来像这样:

 PrinterSettings settings = new PrinterSettings();
        string Printer = settings.PrinterName;

        System.Windows.Controls.PrintDialog printDlg = new System.Windows.Controls.PrintDialog();
      

        printDlg.PrintQueue = new PrintQueue(new PrintServer(), Printer);
        printDlg.PrintTicket.CopyCount = 1;
        printDlg.PrintTicket.PageOrientation = PageOrientation.Landscape;
        printDlg.PrintVisual(this, "Window Printing.");

但由于某种原因,它会立即打开一个对话框,以将该程序另存为 PDF。但我想直接将它打印到我的打印机上,而不需要那个对话框。那么为什么它不打印到我的打印机?以及我怎样才能让它发挥作用。

【问题讨论】:

    标签: wpf xaml mvvm printdialog


    【解决方案1】:

    您确定选择了正确的打印机吗?因为如果PrintDialog 的打印机设置为文件打印机,则PrintDialog 的行为会像这样,例如:"Microsoft Print to PDF"。 (然后,显然,您必须提供打印机应该打印到的文件的名称,因此会出现“保存”对话框。)

    检查您安装了哪些打印机(或者更确切地说,检查您有哪些可用的PrintQueues):

    LocalPrintServer myPrintServer = new LocalPrintServer();
    foreach (PrintQueue pq in myPrintServer.GetPrintQueues())
    {
         Console.WriteLine(pq.Name);
    }
    

    您确定要设置其中之一吗?哪一个是您系统中的默认设置?是不是文件打印机?

    尝试在代码中将打印机名称设置为正确的物理打印机,并检查是否会打印任何内容:

    string myPrinterName = "My Printer"; // <= put an existing name here
    
    LocalPrintServer myPrintServer = new LocalPrintServer();
    PrintDialog printDlg = new PrintDialog();  
    
    PrintQueue printQueue = myPrintServer.GetPrintQueue(myPrinterName);
            
    printDlg.PrintQueue = printQueue;
    printDlg.PrintTicket.CopyCount = 1;
    printDlg.PrintTicket.PageOrientation = PageOrientation.Landscape;
     
    printDlg.PrintVisual(this, "Window Printing.");
    

    在系统中,打印机是否配置正确?

    【讨论】:

    • 是的,我的打印机没有安装:|
    猜你喜欢
    • 2018-05-17
    • 2016-10-17
    • 1970-01-01
    • 2017-08-29
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    相关资源
    最近更新 更多