2017-08-28 1 views
-1

Je souhaite imprimer un document à partir de C#, mais je ne souhaite pas d'interface utilisateur. Le document doit être imprimé en mode silencieux en utilisant C#.Comment imprimer un document à partir de C# sans aucune interface utilisateur

J'ai essayé ProcessStartInfo avec Verb = "Print" mais affiche l'interface utilisateur pour imprimer le document.

Toute sorte d'aide est appréciée.

+0

Juste pour préciser - u veulent vraiment imprimer un document sur une imprimante physique –

+0

double possible de (https: // stackoverflow? [Comment puis-je envoyer un document de fichier à l'imprimante et l'avoir imprimer?]. com/questions/6103705/comment-puis-je-envoyer-un-fichier-document-vers-l'imprimante-et-avoir-le-imprimer) –

+0

Que ciblez-vous: Winforms, WPF, ASP ..? __Always__ AJOUTEZ correctement votre question! - De plus: De quel type de document parlons-nous? Word, pdf, texte ??? – TaW

Répondre

1

Peut-être le PrintDocument.Print Method pourrait aider :)

Notez que je ne pense pas que cela fonctionnera avec Core .net comme l'espace de noms System.Drawing n'a pas été entièrement porté sur. (Source - GitHub corefx Issue #20325

ne sera ce travail dans une application UWP, car ils utilisent une API différente pour les choses d'impression.

je n'ai pas une imprimante avec moi pour tester, mais voici l'exemple de code de msdn

using System; 
using System.IO; 
using System.Drawing; 
using System.Drawing.Printing; 
using System.Windows.Forms; 

public class PrintingExample 
{ 
    private Font printFont; 
    private StreamReader streamToPrint; 
    static string filePath; 


    public PrintingExample() 
    { 
     Printing(); 
    } 

    // The PrintPage event is raised for each page to be printed. 
    private void pd_PrintPage(object sender, PrintPageEventArgs ev) 
    { 
     float linesPerPage = 0; 
     float yPos = 0; 
     int count = 0; 
     float leftMargin = ev.MarginBounds.Left; 
     float topMargin = ev.MarginBounds.Top; 
     String line=null; 

     // Calculate the number of lines per page. 
     linesPerPage = ev.MarginBounds.Height/
      printFont.GetHeight(ev.Graphics) ; 

     // Iterate over the file, printing each line. 
     while (count < linesPerPage && 
      ((line=streamToPrint.ReadLine()) != null)) 
     { 
      yPos = topMargin + (count * printFont.GetHeight(ev.Graphics)); 
      ev.Graphics.DrawString (line, printFont, Brushes.Black, 
      leftMargin, yPos, new StringFormat()); 
      count++; 
     } 

     // If more lines exist, print another page. 
     if (line != null) 
      ev.HasMorePages = true; 
     else 
      ev.HasMorePages = false; 
    } 

    // Print the file. 
    public void Printing() 
    { 
     try 
     { 
      streamToPrint = new StreamReader (filePath); 
      try 
      { 
      printFont = new Font("Arial", 10); 
      PrintDocument pd = new PrintDocument(); 
      pd.PrintPage += new PrintPageEventHandler(pd_PrintPage); 
      // Print the document. 
      pd.Print(); 
      } 
      finally 
      { 
      streamToPrint.Close() ; 
      } 
     } 
     catch(Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

    // This is the main entry point for the application. 
    public static void Main(string[] args) 
    { 
     string sampleName = Environment.GetCommandLineArgs()[0]; 
     if(args.Length != 1) 
     { 
     Console.WriteLine("Usage: " + sampleName +" <file path>"); 
     return; 
     } 
     filePath = args[0]; 
     new PrintingExample(); 
    } 
}