2017-05-12 2 views
0

Dans ma boutique en ligne, je peux télécharger un bon de livraison au format pdf. J'ai construit un service .net qui utilise FileSystemWatcher qui surveille mon dossier "Imprimer". Le service traitera tous les fichiers .pdf et .zpl à l'intérieur du dossier.Impression d'étiquettes PDF sur une imprimante Zebra (420d)

Tous les fichiers .zpl seront ouverts et écrits sur une imprimante Zebra 420d directement à l'aide des pilotes Windows utilisant la classe RawPrinterHelper. Cela fonctionne comme prévu!

Mon problème est le .pdf fichiers. Lorsque j'imprime les fichiers manuellement depuis un navigateur sous Windows 10 vers l'imprimante Zebra 420d, cela fonctionne parfaitement. Mais quand j'essaye de les imprimer de mon service, la taille de l'étiquette sera très petite. Il semble que le contenu a rétréci.

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 ... 
     } 
    } 

J'ai googlé toute la nuit et essayé différentes façons de convertir un fichier PDF en PNG/SVG à ZPL, mais non travaillé.

Comment imprimer des étiquettes au format PDF sur une imprimante Zebra 420d à l'aide de C#? Edit: J'ai également essayé de convertir le PDF en BMP puis en GRF (langage natif de Zebras). Ne fonctionne toujours pas. Tout ce que je reçois est une page blanche.

+0

Exactement ce que je pensais, pas beaucoup qui sait ce ZPL est :) – Dandy

Répondre

0

Je l'ai résolu!

Je n'avais pas besoin de conversion du tout. Je n'avais qu'à réinstaller et ajuster les paramètres du pilote d'imprimante et modifier mon code pour travailler avec les nouveaux paramètres.

Ceci est mon code final:

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

Quels sont les 'using's nécessaires pour exécuter ce code? – Goose

+0

Pourriez-vous en dire plus sur les bibliothèques que vous utilisez? –