2017-02-08 1 views
0

J'essaie d'imprimer un document PDF en utilisant ghostscript. J'utilise l'encapsuleur GHOSTPRINT.NET. J'ai réussi à envoyer la sortie à l'imprimante, mais il reste coincé dans l'état de la file d'attente. Je ne sais pas si cela a à voir avec les commutateurs que j'utilise ou le fichier lui-même. Toute aide serait appréciée. Voici le code:Essayer d'imprimer un document PDF en utilisant GhostScript

public static void PrintFormPdfData(byte[] formPdfData, string printer) 
    { 
     string tempFile; 

     tempFile = Path.GetTempFileName(); 

     using (FileStream fs = new FileStream(tempFile, FileMode.Create)) 
     { 
      fs.Write(formPdfData, 0, formPdfData.Length); 
      fs.Flush(); 
     } 
     using (GhostscriptProcessor processor = new GhostscriptProcessor()) 
     { 
      List<string> switches = new List<string>(); 
      switches.Add("-empty"); 
      switches.Add("-dPrinted"); 
      switches.Add("-dBATCH"); 
      switches.Add("-dNOPAUSE"); 
      switches.Add("-dNOSAFER"); 
      switches.Add("-dNumCopies=1"); 
      switches.Add("-sDEVICE=mswinpr2"); 
      switches.Add("-sOutputFile=%printer%" + printer); 
      switches.Add("-f"); 
      switches.Add(tempFile); 

      processor.StartProcessing(switches.ToArray(), null); 
     } 
    } 

Répondre

1

Si j'étais vous, je commencerais par utiliser le shell de commande et exécuterais Ghostscript à partir de la ligne de commande. Si cela ne fonctionne pas alors nous pouvons aller plus loin, mais pour le moment, vous demandez essentiellement de l'aide sur 2 composants différents simultanément, Ghostscript et l'encapsuleur C# de Ghostscript.NET. Idéalement, vous devez déterminer où votre problème est en premier, si cela fonctionne à partir du shell de commande, alors c'est quelque chose à voir avec Ghostscript.NET. Si ce n'est pas le cas, alors c'est quelque chose à voir avec Ghostscript.

Notez que le '-f' final peut faire partie du problème. Vous n'avez pas besoin de cela à moins que vous:

a) Utilisé le commutateur -c pour introduire PostScript et b) Essayez de le suivre avec d'autres options.

+0

Hey KenS, merci encore pour votre soutien avec GS. Je crois que mon problème tourne plus autour des données que j'essaye d'imprimer, que GS ou GhostScript.NET. – Crumblenautjs

+1

Hmm, bien c'est possible certainement. Je l'essaierais toujours depuis la ligne de commande. Si vous pensez que c'est l'entrée qui est douteuse, il suffit de lancer "gswin32 " et cela va rendre à l'affichage. Devrait au moins vous dire si le fichier d'entrée est OK. – KenS

+0

J'utilise la ligne de commande gswin32 "C: \ TEMP \ report.jpg", mais j'obtiens une erreur d'opérande. J'ai le fichier que je voudrais imprimer stocké dans ce fichier. Quelle est la syntaxe correcte pour essayer d'imprimer le fichier situé sur ce chemin? – Crumblenautjs