Comment imprimer en PDF sur le réseau par défaut de l'imprimante à l'aide de GhostScript (gswin32c.exe) commande shell
Je voudrais imprimer le fichier PDF(s) sur windows " imprimante réseau via GhostScript.
(Je ne veux pas utiliser Adobe Reader)
J'ai lu gswin32c.exe qui peuvent faire le travail.
J'ai expérimenté avec beaucoup de commandes et coudn't de trouver la façon de force gs pour imprimer des PDF sur mon (par défaut de windows) lecteur réseau.
Je n'ai pas besoin de point exact de l'imprimante réseau par défaut peut être utilisé. Mais si il n'y a pas une telle option, je suis heureux de passer le nom de l'imprimante. (J'ai essayé avec les param -SDevice="\server_IP\nom_imprimante" mais cela ne fonctionne pas ainsi...)
Commande fonctionne sous Windows cmd:
gswin32c -dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -dNumCopies=1 -sDEVICE=ljet4 -sOutputFile="\\spool\\\Server_Name\Printer_name" "C:\test.pdf"
Méthode créée sur la base de ci - dessus ne fonctionne pas et thorws exception. (Code d'erreur = 1)
///<summary>
///Prints the PDF.
///</summary>
///<param name="ghostScriptPath">The ghost script path. Eg "C:\Program Files\gs\gs8.71\bin\gswin32c.exe"</param>
///<param name="numberOfCopies">The number of copies.</param>
///<param name="printerName">Name of the printer. Eg \\server_name\printer_name</param>
///<param name="pdfFileName">Name of the PDF file.</param>
///<returns></returns>
public bool PrintPDF (string ghostScriptPath, int numberOfCopies, string printerName, string pdfFileName) {
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.Arguments = " -dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -dNumCopies=" + Convert.ToString(numberOfCopies) + " -sDEVICE=ljet4 -sOutputFile=\"\\\\spool\\" + printerName + "\" \"" + pdfFileName + "\"";
startInfo.FileName = ghostScriptPath;
startInfo.UseShellExecute = false;
Process process = Process.Start(startInfo);
return process.ExitCode == 0;
}
Aucune idée de comment le faire fonctionner sous C#?
J'ai édité le post pour être plus C# spécifiques maintenant
OriginalL'auteur Maciej | 2010-04-08
Vous devez vous connecter pour publier un commentaire.
J'ai finalement réussi à travailler et facile pour le débogage.
Mon dernier code de la méthode pour ceux qui sont intéressés:
Vous avez raison, merci
Seul problème que j'ai avec la méthode ci-dessus est les marges de la page. Je coudnt trouver de solution sur la manière de les mettre en place. DONC mon top contenu de la page est souvent coupée. Je me demande si quelqu'un sait comment résoudre ça?
J'ai résolu côté de la page pour spécifier la taille du papier par les options de passage de l'extérieur fichier cfg.
Comme pour le processus appelant.Close(), si j'ai enveloppé processus de "l'aide" de l'énoncé?: "à l'aide de Processus(process = Processus.Start(startInfo))"
OriginalL'auteur Maciej
Vous devez tester vos options en ligne de commande, tout d'abord, puis de traduire le succès dans votre code.
Un fichier PDF habituellement ne comprennent déjà les marges de la page. Vous "souvent coupée" contenu de la page peut résulter d'un PDF, ce qui est signifié par page A4 imprimé sur un format de Lettre.
PDF utilise également des boîtes qui organisent la page (et de l'objet) contenu:
MediaBox
,TrimBox
,CropBox
,Bleedbox
.Il y a de diverses options de contrôle pour qui "la taille du support" Ghostscript rend une donnée d'entrée:
Avec
PDFFitPage
Ghostscript rendra à la page en cours la taille de l'instrument (généralement de la taille de page par défaut).Avec
UseTrimBox
il va utiliser laTrimBox
(et il va en même temps définir laPageSize
à cette valeur).Avec
UseCropBox
il va utiliser laCropBox
(et il va en même temps définir laPageSize
à cette valeur).Par défaut (donnez pas de paramètre), Ghostscript rendra à l'aide de la
MediaBox
.Note, vous pouvez également contrôler la taille globale de votre sortie en utilisant
-sPAPERSIZE
(sélectionnez parmi toutes les valeurs définies par Ghostscript sait), ou (pour les plus de souplesse) utilisation-dDEVICEWIDTHPOINTS=NNN -dDEVICEHEIGHTPOINTS=NNN
pour configurer les formats de page personnalisés.OriginalL'auteur Kurt Pfeifle
Ne sais pas si ça aide quelqu'un, mais pour ajouter à l'impression de documents de la file d'attente au lieu d'immédiatement l'impression de faire des changements à la section ci-dessus avec
Pré-requis: Configurer votre imprimante type de travail à "Tenir" Print": Dans notre cas, nous avons une Rico consommation des aficio MP 4000 Imprimante et notre consommation est l'exécution d'une soirée travail pour imprimer un tas de fichiers PDF générés par le biais de SSRS.
OriginalL'auteur Kiran Xyz