it-swarm.com.de

Pdf in C # drucken

Ich bin neu bei c #. Ich habe im ganzen Internet nach Tutorials zum Drucken von PDFs gesucht, konnte aber keine finden.

Dann dachte ich, ist es möglich, es mit itextpdf zu lesen, wie hier erwähnt

Lesen von PDF -Inhalten mit itextsharp-dll in VB.NET oder C #

dann drucken Sie es aus. Wenn das so ist, wie?

29
Corbee

Ein sehr einfacher Ansatz ist die Verwendung eines installierten Adobe Readers oder eines anderen PDF - Viewers, der drucken kann:

Process p = new Process( );
p.StartInfo = new ProcessStartInfo( )
{
    CreateNoWindow = true,
    Verb = "print",
    FileName = path //put the correct path here
};
p.Start( );

Ein anderer Weg ist die Verwendung einer Komponente eines Dritten, z. PDFView4NET

49
PVitt

ich habe eine sehr (!) kleine Hilfsmethode um den Adobereader geschrieben, um PDF-Dateien aus c # zu drucken:

  public static bool Print(string file, string printer) {
     try {
        Process.Start(
           Registry.LocalMachine.OpenSubKey(
                @"SOFTWARE\Microsoft\Windows\CurrentVersion" +
                @"\App Paths\AcroRd32.exe").GetValue("").ToString(),
           string.Format("/h /t \"{0}\" \"{1}\"", file, printer));
        return true;
     } catch { }
     return false;
  }

man kann sich nicht auf den Rückgabewert der Methode verlassen ...

22
santa

Wenn Sie eine PDF -Datei einfach programmgesteuert drucken möchten, verwenden Sie den LPR-Befehl: http://www.Microsoft.com/resources/documentation/windows/xp/all/ proddocs/de-de/lpr.mspx? mfr = true

LPR ist auch für neuere Windows-Versionen (z. B. Vista/7) verfügbar. Sie müssen es jedoch in den optionalen Windows-Komponenten aktivieren.

Zum Beispiel:

Process.Start("LPR -S printerdnsalias -P raw C:\files\file.pdf");

Sie können anstelle des Alias ​​auch die IP-Adresse des Druckers verwenden.

Dies setzt voraus, dass Ihr Drucker PDF Direct Printing unterstützt. Andernfalls funktioniert dies nur für PostScript- und ASCII -Dateien. Für den Drucker muss außerdem eine Netzwerkschnittstelle installiert sein, und Sie müssen dessen IP-Adresse oder Alias ​​kennen. 

9
Lessan Vaezi

Ich hatte das gleiche Problem beim Drucken einer PDF -Datei. Es gibt ein Nuget-Paket namens Spire.Pdf, das sehr einfach zu bedienen ist. Die kostenlose Version hat ein Limit von 10 Seiten, obwohl dies in meinem Fall die beste Lösung war, wenn ich mich nicht auf Adobe Reader verlassen und keine anderen Komponenten installieren möchte.

https://www.nuget.org/packages/Spire.PDF/

PdfDocument pdfdocument = new PdfDocument();
pdfdocument.LoadFromFile(pdfPathAndFileName);
pdfdocument.PrinterName = "My Printer";
pdfdocument.PrintDocument.PrinterSettings.Copies = 2;
pdfdocument.PrintDocument.Print();
pdfdocument.Dispose();
6
Murilo

Verwenden Sie PDFiumViewer. Ich suchte lange, bis ich eine ähnliche Lösung fand, dann fand ich dieses saubere Stück Code, das nicht auf das Senden von Rohdateien an den Drucker angewiesen ist (was schlecht ist, wenn sie als Textdateien interpretiert werden) Acrobat oder Ghostscript als Helfer (beide müssten installiert werden, was mühsam ist):

https://stackoverflow.com/a/41751184/586754

PDFiumViewer kommt über Nuget, das Codebeispiel oben ist abgeschlossen. Übergeben Sie Nullwerte für die Verwendung des Standarddruckers.

3
Andreas Reiff

Sie können das PDF -Dokument mit PdfSharp erstellen. Es ist eine Open Source .NET-Bibliothek.

Wenn Sie versuchen, das Dokument zu drucken, wird es noch schlimmer. Ich habe überall nach einer Open-Source-Methode gesucht. Es gibt einige Möglichkeiten, dies mit AcroRd32.exe zu tun, aber es hängt alles von der Version ab, und es ist nicht möglich, wenn der Acrobat Reader nicht geöffnet ist.

Am Ende habe ich schließlich VintaSoftImaging.NET SDK verwendet. Es kostet etwas Geld, ist aber viel billiger als die Alternative und löst das Problem sehr einfach.

var doc = new Vintasoft.Imaging.Print.ImagePrintDocument { DocumentName = @"C:\Test.pdf" };
doc.Print();

Das wird einfach auf dem Standarddrucker gedruckt, ohne zu zeigen. Es gibt verschiedene Alternativen und Optionen.

3
Poxet

Ich empfehle Ihnen, das 2Printer-Befehlszeilentool unter: http://www.doc2prn.com/ zu testen.

Das Befehlszeilenbeispiel zum Drucken aller PDF -Dateien aus dem Ordner "C:\Input" befindet sich unten. Sie können es einfach von Ihrem C # -Code aus aufrufen.

2Printer.exe -s "C:\Input * .PDF" -prn "Canon Drucker der MP610-Serie"

1
Mikhael Bolgov

Der einfachste Weg ist das Erstellen von C # Process und das Starten eines externen Tools zum Drucken Ihrer PDF -Datei

private static void ExecuteRawFilePrinter() {
    Process process = new Process();
    process.StartInfo.FileName = "c:\\Program Files (x86)\\RawFilePrinter\\RawFilePrinter.exe";
    process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    process.StartInfo.Arguments = string.Format("-p \"c:\\Users\\Me\\Desktop\\mypdffile.pdf\" \"gdn02ptr006\"");
    process.Start();
    process.WaitForExit();
}

Der obige Code startet RawFilePrinter.exe (ähnlich wie 2Printer.exe), jedoch mit besserer Unterstützung. Es ist nicht kostenlos, aber durch Spenden können Sie es überall verwenden und mit Ihrer Bewerbung weiterverteilen. Neueste Version zum Download: http://bigdotsoftware.pl/rawfileprinter

1
zuko

Es ist möglich, Ghostscript zu verwenden, um PDF -Dateien zu lesen und auf einem genannten Drucker zu drucken.

1
Mark Redman

Es ist auch möglich, dies mit einem eingebetteten Webbrowser zu tun. Beachten Sie jedoch, dass dies möglicherweise eine lokale Datei ist und dass es sich nicht direkt um den Browser handelt und dass kein DOM vorhanden ist, sodass kein Bereitschaftsstatus vorliegt.

Hier ist der Code für den Ansatz, den ich für ein Win-Form-Webbrowser-Steuerelement ausgearbeitet habe:

    private void button1_Click(object sender, EventArgs e)
    {
        webBrowser1.Navigate(@"path\to\file");
    }  

    private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
    {   
        //Progress Changed fires multiple times, however after the Navigated event it is fired only once,
        //and at this point it is ready to print
        webBrowser1.ProgressChanged += (o, args) => 
        {
            webBrowser1.Print();//Note this does not print only brings up the print preview dialog
            //Should be on a separate task to ensure the main thread 
            //can fully initialize the print dialog 
            Task.Factory.StartNew(() => 
            {
                Thread.Sleep(1000);//We need to wait before we can send enter
                //This assumes that the print preview is still in focus
                Action g = () =>
                {
                    SendKeys.SendWait("{ENTER}");
                };
                this.Invoke(g);
            });
        };
    }
0
yoel halb

Wenn Sie Adobe Reader installiert haben, können Sie es einfach als Standarddrucker festlegen. Und VOILA! Sie können als PDF drucken!

printDocument1.PrinterSettings.PrinterName = "Adobe PDF";
printDocument1.Print();

So einfach ist das auch !!!

0
PiggyChu515

Sieht so aus, als würden die üblichen Verdächtigen wie pdfsharp und migradoc das nicht tun (pdfsharp nur, wenn Sie Acrobat (Reader) installiert haben).

Ich habe hier gefunden

https://vishalsbsinha.wordpress.com/2014/05/06/wie-zu-programmiert-c-net-print-a-pdf-file-directly-nach-der-drucker/

code bereit zum Kopieren/Einfügen. Es verwendet den Standarddrucker. Soweit ich es sehe, verwendet es nicht einmal Bibliotheken, sondern sendet die PDF-Bytes direkt an den Drucker. Ich gehe also davon aus, dass der Drucker dies auch unterstützen muss. Auf einem 10 Jahre alten Drucker habe ich es getestet und es funktioniert einwandfrei.

Bei den meisten anderen Ansätzen - ohne kommerzielle Bibliotheken oder Anwendungen - müssen Sie sich in den Druckergeräte-Kontext einordnen. Machbar, aber es dauert eine Weile, bis es funktioniert und für alle Drucker geeignet ist.

0
Andreas Reiff

Öffnen, importieren, bearbeiten, zusammenführen und konvertieren Sie Dokumente von Acrobat PDF mit ein paar Zeilen Code mithilfe der intuitiven API von Ultimate PDF. Durch die Verwendung von 100% verwaltetem Code, der in C # geschrieben wurde, nutzt die Komponente die zahlreichen integrierten Funktionen von .NET Framework, um die Leistung zu verbessern. Darüber hinaus ist die Bibliothek CLS-kompatibel, und es werden keine unsicheren Blöcke für minimale Berechtigungsanforderungen verwendet. Die Klassen sind vollständig mit ausführlichem Beispielcode dokumentiert, der Ihnen hilft, Ihre Lernkurve zu verkürzen. Wenn Ihre Entwicklungsumgebung Visual Studio ist, können Sie die Online-Dokumentation vollständig integrieren. Markieren oder wählen Sie einfach ein Schlüsselwort aus und drücken Sie F1 in Ihrer Visual Studio IDE. Die Online-Dokumentation wird sofort angezeigt. Eine leistungsstarke und zuverlässige PDF -Bibliothek, mit der Sie Ihren .NET-Anwendungen mit wenigen Codezeilen PDF -Funktionalität hinzufügen können. 

PDF Komponente für NET

0
alexanoid

Der beste Weg, um PDF automatisch aus C # zu drucken, ist die Verwendung des "direkten PDF" des Druckers. Sie müssen lediglich die PDF-Datei in den Netzwerknamen des Druckers kopieren. Der Rest wird vom Drucker selbst erledigt.

Die Geschwindigkeit ist 10-mal schneller als bei allen anderen Methoden. Die Anforderungen sind jedoch das Druckermodell, das den direkten PDF-Druck unterstützt und über mindestens 128 MB Dram verfügt, was für jeden modernen Drucker einfach ist.

0
Thái Linh

Das hängt davon ab, was Sie drucken möchten. Sie benötigen eine PDF-Druckeranwendung eines Drittanbieters, oder wenn Sie eigene Daten drucken, können Sie den Report Viewer in Visual Studio verwenden. Es kann Berichte in Excel- und PDF-Dateien ausgeben.

0
Dave81