Auto print without dialog

后端 未结 3 1711
情话喂你
情话喂你 2020-12-06 03:04

I found code for printing. But I want to sent to printer automaticaly without dialog box. I know printername. I get printer name from SQL table. How can I do it ?



        
相关标签:
3条回答
  • 2020-12-06 03:20

    I remove if (pd.ShowDialog() != true) return; and add this code pd.PrintQueue = new PrintQueue(new PrintServer(), "printer name" ); to print my choose printer.

    0 讨论(0)
  • 2020-12-06 03:26

    If you'd like to send directly to your default printer (that's it, without having to give its name in the above code) you can use this piece:

    private void PrintSimpleTextButton_Click(object sender, RoutedEventArgs e)
        {
            // Create a PrintDialog  
            PrintDialog printDlg = new PrintDialog();
    
            // Create a FlowDocument dynamically.  
            FlowDocument doc = CreateFlowDocument();
            doc.Name = "FlowDoc";
    
            // Create IDocumentPaginatorSource from FlowDocument  
            IDocumentPaginatorSource idpSource = doc;
    
            // Call PrintDocument method to send document to printer  
            printDlg.PrintDocument(idpSource.DocumentPaginator, "Hello WPF Printing.");
        }
    
        /// <summary>  
        /// This method creates a dynamic FlowDocument. You can add anything to this  
        /// FlowDocument that you would like to send to the printer  
        /// </summary>  
        /// <returns></returns>  
        private FlowDocument CreateFlowDocument()
        {
            // Create a FlowDocument  
            FlowDocument doc = new FlowDocument();
    
            // Create a Section  
            Section sec = new Section();
    
            // Create first Paragraph  
            Paragraph p1 = new Paragraph();
    
            // Create and add a new Bold, Italic and Underline  
            Bold bld = new Bold();
            bld.Inlines.Add(new Run("First Paragraph"));
            Italic italicBld = new Italic();
            italicBld.Inlines.Add(bld);
    
            Underline underlineItalicBld = new Underline();
            underlineItalicBld.Inlines.Add(italicBld);
    
            // Add Bold, Italic, Underline to Paragraph  
            p1.Inlines.Add(underlineItalicBld);
    
            // Add Paragraph to Section  
            sec.Blocks.Add(p1);
    
            // Add Section to FlowDocument  
            doc.Blocks.Add(sec);
            return doc;
        }
    
    0 讨论(0)
  • 2020-12-06 03:38

    Instead of the PrintDialog class, try using the PrintDocument class directly, where you can set the printer by the name:

    using System.Drawing.Printing;
    
    PrintDocument pd = new PrintDocument();
    pd.PrinterSettings.PrinterName = "my printer";
    

    To loop through the available printer names:

    foreach (string s in PrinterSettings.InstalledPrinters) {
      //
    }
    
    0 讨论(0)
提交回复
热议问题