2017-05-12 5 views
0

In meinem Webshop kann ich einen Lieferschein als PDF-Datei herunterladen. Ich habe einen .net Dienst erstellt, der FileSystemWatcher verwendet, der meinen Ordner "Drucken" überwacht. Der Dienst verarbeitet alle Dateien .pdf und .zpl innerhalb des Ordners.Drucken von PDF-Etiketten auf einen Zebra-Drucker (420d)

Alle .zpl Dateien werden geöffnet und direkt über die Windows-Treiber unter Verwendung der RawPrinterHelper Klasse auf einen Zebra 420d Drucker geschrieben. Es funktioniert wie erwartet!

Mein Problem ist die .pdf Dateien. Wenn ich die Dateien manuell von einem Browser in Windows 10 auf den Zebra 420d Drucker drucke, funktioniert es einwandfrei. Aber wenn ich versuche, sie von meinem Dienst zu drucken, wird die Größe des Etiketts sehr klein sein. Es sieht so aus als ob der Inhalt geschrumpft ist.

public static bool PrintPdf(string filepath, string printerName) 
    { 
     try 
     { 
      var doc = new PdfDocument(); 
      doc.LoadFromFile(filepath); 
      doc.PrinterName = printerName; 
      doc.PrintDocument.Print(); 
      doc.Dispose(); 

      return true; 
     } 
     catch (Exception ex) 
     { 
      // More code ... 
     } 
    } 

Ich habe die ganze Nacht gegoogelt und versucht, verschiedene Möglichkeiten, um ein PDF zu PNG/SVG ZPL zu konvertieren, aber nicht funktionierte.

Wie kann ich Etiketten im PDF-Format auf einem Zebra 420d-Drucker mit C# drucken?

Edit: Ich habe auch versucht, das PDF zu einem BMP und dann zu GRF (Zebras Muttersprache) zu konvertieren. Funktioniert immer noch nicht. Alles, was ich bekomme, ist eine leere Seite.

+0

Genau das, was ich dachte, nicht viele, die wissen, was ZPL ist :) – Dandy

Antwort

0

Ich habe es gelöst!

Ich brauchte überhaupt keine Konvertierung. Ich musste nur die Druckertreibereinstellungen neu installieren und anpassen und meinen Code ändern, um mit den neuen Einstellungen zu arbeiten.

Dies ist mein letzter Code:

public static bool Print(string filepath, string printerName) 
    { 
     try 
     { 
      var doc = new PdfDocument(); 
      doc.LoadFromFile(filepath); 
      doc.PrinterName = printerName; 

      var psize = new PaperSize("Custom Paper Size", 417, 1007); 
      doc.PrintDocument.DefaultPageSettings.PaperSize = psize; 
      doc.PageSettings.Rotate = PdfPageRotateAngle.RotateAngle180; 

      doc.PrintDocument.Print(); 
      doc.Dispose(); 

      return true; 
     } 
     catch (Exception ex) 
     { 
      // More code ... 
     } 
    } 
+0

Was ist die 'using's benötigte diesen Code ausführen? – Goose

+0

Könnten Sie in der Tat etwas mehr über die Bibliotheken, die Sie verwenden, ausarbeiten? –