PDF Dateien drucken C#

Viele Unternehmen reduzieren den Papierverbrauch weitgehend. Es gibt jedoch einige Szenarien, in denen das Drucken wichtig ist. Beispielsweise kann ein System Einzelheiten einer Online-Bestellung im PDF Format enthalten. Sie müssen PDF drucken, während sie eine Online-Bestellung zur Lieferung aufgeben. Sie verarbeiten Artikel in großem Umfang, sodass das manuelle Drucken jedes Dokuments eine ziemliche Aufgabe sein kann. Aspose.PDF for .NET API unterstützt neben vielen anderen Dateibearbeitungs und Konvertierungsfunktionen das effiziente Drucken von PDF Dateien. Lassen Sie uns die folgenden Anwendungsfälle im Zusammenhang mit dem Drucken von PDF Dateien in .NET Anwendungen mit C# untersuchen:

PDF Datei mit C# drucken

Das Drucken von PDF Dateien kann in Ihren .NET Anwendungen mit C# oder VB.net automatisiert werden. Sie können PDF Dateien drucken, indem Sie die folgenden einfachen Schritte ausführen:

  1. Erstellen Sie ein Objekt der Klasse PdfViewer.
  2. Eingabe PDF Dokument laden
  3. Drucken Sie die PDF Datei

Das folgende code snippet zeigt, wie Sie eine PDF Datei mit C# drucken:

//PdfViewer objekt erstellen
PdfViewer viewer = new PdfViewer();
//PDF-Eingabedatei öffnen
viewer.BindPdf(dataDir + "Test.pdf");
//PDF Dokument drucken
viewer.PrintDocument();
//PDF Datei schließen
viewer.Close();

Mehrere PDF Dateien mit C# drucken

Wenn Sie aufgrund der Natur Ihres Unternehmens mehrere Dateien drucken müssen, wird diese Funktion bereits von Aspose.PDF for .NET API unterstützt. Das Drucken mehrerer PDF Dateien nacheinander mit dem obigen code snippet kann etwas langsam sein. Lassen Sie uns daher beim PDF-Druck noch einen Schritt weiter gehen, um den Prozess zu vereinfachen. Hier verwenden wir List, während wir der Liste den Namen jeder PDF Datei hinzufügen. Die folgenden Schritte erklären, wie wir mehrere PDF Dateien drucken:

  1. Initialisiert eine Liste vom Typ String
  2. PDF Dateien zur Liste hinzufügen
  3. Eingabe PDF Datei laden
  4. Drucken Sie mehrere PDF Dateien

Das code snippet zeigt, wie mehrere PDF Dateien mit C# gedruckt werden:

var files = new List<string>();
files.Add(dataDir + "First.pdf");
files.Add(dataDir + "Second.pdf");

foreach (String file in files)
{
    //PdfViewer objekt erstellen
    PdfViewer viewer = new PdfViewer();
    //PDF-Eingabedatei öffnen
    viewer.BindPdf(file);
    //PDF Dokument drucken
    viewer.PrintDocument();
    //PDF Datei schließen
    viewer.Close();
}

Drucken bestimmter PDF-Seiten mit C#

Die Funktion zum Drucken bestimmter Seiten von PDF Dokumenten ist in der API verfügbar. Wir betrachten ein Beispiel, das das Drucken mehrerer Seitenbereiche umfasst. Sie müssen die Von und Bis-Seitenzahlen wie in den folgenden Schritten erläutert angeben:

  • Legen Sie die Eingabe und Ausgabepfade für die Datei fest
  • Legen Sie den Druck bestimmter Seiten fest, indem Sie einen Bereich definieren
  • Geben Sie die Druckparameter an
  • Drucken Sie die Seiten wie zuvor angegeben

Das folgende code snippet zeigt, wie bestimmte Seiten des Dokuments mit C# gedruckt werden:

string inPdf = dataDir + "Test.pdf";
string output = dataDir;
IList<PrintingJobSettings> printingJobs = new List<PrintingJobSettings>();
PrintingJobSettings printingJob1 = new PrintingJobSettings();
printingJob1.FromPage = 2;
printingJob1.ToPage = 3;
printingJobs.Add(printingJob1);

PrintingJobSettings printingJob2 = new PrintingJobSettings();
printingJob2.FromPage = 5;
printingJob2.ToPage = 7;
printingJobs.Add(printingJob2);

{
    for (var printingJobIndex = 0; printingJobIndex < printingJobs.Count; printingJobIndex++)
    {
        System.Drawing.Printing.PageSettings pgs = new System.Drawing.Printing.PageSettings();
        System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings();
        ps.PrinterName = "Microsoft Print to PDF";
        ps.PrintRange = System.Drawing.Printing.PrintRange.SomePages;
        ps.FromPage = printingJobs[printingJobIndex].FromPage;
        ps.ToPage = printingJobs[printingJobIndex].ToPage;
        System.Console.WriteLine(ps.FromPage);
        System.Console.WriteLine(ps.ToPage);
        System.Console.WriteLine(printingJobIndex);
        using (var theViewer = new Aspose.Pdf.Facades.PdfViewer())
        {
            // Der Dokumentdruckcode gehört hierher
            // Dokument mit Drucker und Seiteneinstellungen drucken                    
            theViewer.BindPdf(inPdf);
            theViewer.AutoResize = true;
            theViewer.AutoRotate = true;
            theViewer.PrintPageDialog = false;
            theViewer.PrintDocumentWithSettings(pgs, ps);
            theViewer.Close();
        }
    }
}

Geschützte PDF Datei mit C# drucken

Eine PDF Datei kann gesichert und durch ein Passwort geschützt werden. Das Passwort könnte jedoch von zwei Arten sein, dh Benutzer und Besitzerpasswort. Die mit dem Benutzerkennwort gesicherten PDF Dateien benötigen ein Kennwort, um die verschlüsselte PDF Datei zu öffnen und anzuzeigen. Andererseits wird das Besitzerpasswort benötigt, um den Inhalt der gesicherten und passwortgeschützten PDF Datei zu ändern. Die folgenden Schritte erläutern das Drucken von sicheren PDF Dateien:

  1. Laden Sie gesichertes PDF mit Passwort
  2. Erstellen Sie das Objekt PdfViewer.
  3. Geschützte PDF Datei drucken

Das folgende code snippet zeigt, wie Sie eine gesicherte PDF Datei mit C# drucken:

//Laden Sie ein sicheres PDF Dokument, während Sie das Benutzer oder Eigentümerkennwort angeben
Document document = new Document(dataDir + "Password.pdf" , "userORowner");
//PdfViewer objekt erstellen
PdfViewer viewer = new PdfViewer();
//PDF-Eingabedatei öffnen
viewer.BindPdf(document);
//PDF Dokument drucken
viewer.PrintDocument();
//PDF Datei schließen
viewer.Close();

Drucken von PDFs in einem bestimmten Papierfach eines Druckers mit C#

Mit Aspose.PDF for .NET API können Sie eine PDF Datei in einem bestimmten Papierfach drucken. Beispielsweise möchten Sie möglicherweise eine PDF Datei mit vielen Fotos in einem anderen Papierfach und eine Text-PDF Datei in einem anderen Papierfach drucken. Führen Sie die folgenden Schritte aus, um das Ausgabefach oder -fach zum Drucken von PDF Dateien festzulegen:

  1. Eingabe PDF Datei laden
  2. Legen Sie die Attribute für den Druck fest
  3. Geben Sie PageSettings und PaperSource an
  4. Rufen Sie die Methode PrintDocumentWithSettings auf

Bemerkenswert ist hier, dass Sie den Namen des Druckers ändern können. Hier verwenden wir als Beispiel Microsoft Print to PDF. Das folgende code snippet folgt diesen Schritten und zeigt, wie ein Dokument in einem bestimmten Papierfach oder Fach eines Druckers mit C# gedruckt wird:

Document doc = new Document("Test.pdf");
PdfViewer viewer = new PdfViewer();
viewer.BindPdf(doc);
viewer.PrinterJobName = System.IO.Path.GetFileName(doc.FileName);
viewer.Resolution = 110;
// Legen Sie die Attribute für den Druck fest
viewer.AutoResize = true; // Print the file with adjusted size
viewer.AutoRotate = false; // Print the file with adjusted rotation
viewer.PrintPageDialog = false; // Do not produce the page number dialog when printing
viewer.RenderingOptions.UseNewImagingEngine = true;
// Erstellen Sie Objekte für Drucker und Seiteneinstellungen und PrintDocument
System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings();
System.Drawing.Printing.PageSettings pgs = new System.Drawing.Printing.PageSettings();
// Druckernamen festlegen
ps.PrinterName = "Microsoft Print to PDF";
pgs.PaperSize = new System.Drawing.Printing.PaperSize(paperTypeName, paperWidth, paperHeight);
pgs.Margins = new System.Drawing.Printing.Margins(margins.Left, margins.Right, margins.Top, margins.Bottom);
pgs.PaperSource = GetPaperSource(printerName, trayName);
// Dokument mit Drucker und Seiteneinstellungen drucken
viewer.PrintDocumentWithSettings(pgs, ps);

///<summary>
/// Gibt das PaperSource objekt für den bereitgestellten Drucker und Behälternamen zurück.
///</summary>
///<param name="printerName"></param>
///<param name="trayName"></param>
///<returns></returns>
public static System.Drawing.Printing.PaperSource GetPaperSource(string printerName, string trayName)
{
    System.Drawing.Printing.PaperSource ps = null;
    System.Drawing.Printing.PrintDocument prtDoc = new System.Drawing.Printing.PrintDocument();
    prtDoc.PrinterSettings.PrinterName = printerName;
    for (int i = 0; i < prtDoc.PrinterSettings.PaperSources.Count; i++)
    {
        if (prtDoc.PrinterSettings.PaperSources[i].SourceName.ToLower().Equals(trayName.ToLower()))
        {
            ps = prtDoc.PrinterSettings.PaperSources[i];
            break;
        }
    }
    return ps;
}

Drucken des Seitenbereichs auf verschiedene Papierquellen mit C#

Es kann Situationen geben, in denen Sie möglicherweise verschiedene Seiten eines PDF Dokuments in verschiedenen Papierfächern oder Fächern drucken müssen. Beispielsweise eine andere Papierquelle für das Deckblatt und eine andere für die anderen Seiten. Sie können sicherlich die folgenden Schritte ausführen, um Seitenbereiche innerhalb desselben Druckauftrags auf verschiedene Papierquellen zu drucken:

  1. Initialisiert ein Objekt der Klasse PdfViewer.
  2. Verwenden Sie PdfQueryPageSettings-Ereignishandler-Delegat
  3. Legen Sie Seiten und Druckereinstellungen fest
  4. Rufen Sie die Methode PrintDocumentWithSettings auf

Das folgende code snippet zeigt, wie Sie diese Schritte ausführen und verschiedene Seitenbereiche mit C# auf verschiedene Papierquellen oder Fächer drucken:

Aspose.Pdf.Facades.PdfViewer pdfv = new Aspose.Pdf.Facades.PdfViewer();

pdfv.PdfQueryPageSettings += PdfvOnPdfQueryPageSettings;

System.Drawing.Printing.PageSettings pgs = new System.Drawing.Printing.PageSettings();
System.Drawing.Printing.PrinterSettings prin = new System.Drawing.Printing.PrinterSettings();

pdfv.BindPdf(dataDir + "Print-PageRange.pdf");
prin.PrinterName = "HP LaserJet M9050 MFP PCL6";
prin.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("A4", 827, 1169);

Aspose.Pdf.Facades.PdfPageEditor pageEditor = new Aspose.Pdf.Facades.PdfPageEditor();
pageEditor.BindPdf(dataDir + "input.pdf");

pgs.Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0);
pgs.PaperSize = prin.DefaultPageSettings.PaperSize;

pdfv.PrintDocumentWithSettings(pgs, prin);
pdfv.Close();

private static void PdfvOnPdfQueryPageSettings(object sender, System.Drawing.Printing.QueryPageSettingsEventArgs queryPageSettingsEventArgs, PdfPrintPageInfo currentPageInfo)
{
    bool isOdd = currentPageInfo.PageNumber % 2 != 0;

    System.Drawing.Printing.PrinterSettings.PaperSourceCollection paperSources = queryPageSettingsEventArgs.PageSettings.PrinterSettings.PaperSources;

    if (isOdd)
        queryPageSettingsEventArgs.PageSettings.PaperSource = paperSources[0];
    else
        queryPageSettingsEventArgs.PageSettings.PaperSource = paperSources[1];
}

Überprüfen Sie den Druckauftragsstatus beim Drucken von PDF mit C#

Sie können PDF Dateien auf verschiedenen Druckern drucken. Beispielsweise Microsoft Print to PDF, Microsoft XPS Document Writer oder ein beliebiger physischer Drucker. Bei großen PDF Dokumenten kann das Drucken jedoch lange dauern oder aus irgendeinem Grund fehlschlagen. Daher bietet die API eine Funktion, mit der Sie den Druckauftragsstatus mit den folgenden Schritten überprüfen können:

  1. Eingabe PDF Datei laden
  2. Seiteneinstellungen festlegen
  3. Druckernamen festlegen
  4. PDF Dokument drucken mit PrintDocumentWithSettings

Das folgende code snippet zeigt, wie Sie den Druckauftragsstatus oder den Druckfortschritt von PDFs mit C# überprüfen:

// PdfViewer objekt instanziieren
PdfViewer viewer = new PdfViewer();

// Quell-PDF Datei binden
viewer.BindPdf(dataDir + "Sample Document with Bookmark.pdf");
viewer.AutoResize = true;

// Druckdialog ausblenden
viewer.PrintPageDialog = false;

// Objekt Druckereinstellungen erstellen
System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings();
System.Drawing.Printing.PageSettings pgs = new System.Drawing.Printing.PageSettings();
System.Drawing.Printing.PrintDocument prtdoc = new System.Drawing.Printing.PrintDocument();

// Geben Sie die Druckernummer an
//ps.PrinterName = "Microsoft XPS Document Writer";
ps.PrinterName = "Microsoft Print to PDF";

// Name des resultierenden Ausdrucks
//ps.PrintFileName = "ResultantPrintout.xps";
ps.PrintFileName = "ResultantPrintout.pdf";

// Drucken Sie die Ausgabe in eine Datei
ps.PrintToFile = true;
ps.FromPage = 1;
ps.ToPage = 2;
ps.PrintRange = System.Drawing.Printing.PrintRange.SomePages;

// Legen Sie die Seitengröße des Ausdrucks fest
pgs.PaperSize = new System.Drawing.Printing.PaperSize("A4", 827, 1169);
ps.DefaultPageSettings.PaperSize = pgs.PaperSize;
pgs.Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0);

// Drucken Sie das Dokument mit den oben angegebenen Einstellungen
viewer.PrintDocumentWithSettings(pgs, ps);

// Überprüfen Sie den Druckstatus
if (viewer.PrintStatus != null)
{
    // Eine Ausnahme wurde ausgelöst
    Exception ex = viewer.PrintStatus as Exception;
    if (ex != null)
    {
        // Ausnahmemeldung erhalten
    }
}
else
{
    // Es wurden keine Fehler gefunden. Der Druckauftrag wurde erfolgreich abgeschlossen
    Console.WriteLine("printing completed without any issue..");
}

Als Ergebnis wird dieses code snippet auf der Konsole der .NET Anwendung über den Druckstatus der PDF Datei gedruckt:

C# Pdf drucken

Fazit

Zusammenfassend haben wir verschiedene Ansätze und Anwendungsfälle zum Drucken passwortgeschützter und ungesicherter PDF Dateien mit C# oder VB NET in Ihren Programmieranwendungen kennengelernt. Darüber hinaus haben wir das Drucken ganzer PDF Dokumente untersucht. Ebenso haben wir gelernt, einige Seitenbereiche nach bestimmten Seitenfächern, Fächern oder Papierquellen zu drucken. Darüber hinaus haben wir auch geprüft, wie Sie den Druckstatus oder den Druckfortschritt von Dokumenten mit C# überwachen können.

Siehe auch