J'ai une application basée sur J2EE, où j'utilise un outil de rapport pour générer des sorties au format PDF. J'ai besoin d'un utilitaire / outil dans Java qui peut m'aider à convertir mon fichier PDF au format PostScript afin que je puisse l'imprimer à une imprimante ... Mon application sera exécutée sur une variété d'OS (Windows / Linux / AIX), donc Une solution de plate-forme indépendante est essentielle. Mon outil de rapport ne prend pas en charge les sorties au format PS. S'il vous plaît conseil ... p>
8 Réponses :
Peut-être envisager d'utiliser Rapports Jasper . p>
Cela vous permettra de générer un rapport dans une sortie de plusieurs sorties (PDF, HTML, RTF). p>
Vous pouvez également exporter le rapport à une imprimante. P>
voici un rapide Exemple J'ai trouvé à exporter vers une imprimante en utilisant JRPrintServiceExporter par opposition à l'utilisation d'un exportateur PDF. On dirait que cela fera le travail. P>
Voici un lien que pourrait i> être utile pour générer des PS de Jasper: forums.Codecharge.com/postS.php?post_id=57257
Merci Gordon pour votre aide ... je suis en train d'utiliser des rapports Jasper pour la génération de sortie, mais je ne suis pas en mesure de trouver une option pour exporter la sortie sur l'imprimante ... et les formats pris en charge par défaut n'incluent pas PS
Il y a Afaik sans imbécile Solutions PURE JAVA PURE pour cela, mais si la conversion doit être effectuée sur le côté serveur, je vous recommanderais d'utiliser Convertisseur PDF2PS de Ghostscript's . Même si vous devez installer une version spécifique de la plate-forme de Ghostscript, vous devez en trouver un pour toutes les plates-formes mentionnées. P>
Ghostscript est gratuit et fonctionne sur toutes les plateformes. En l'absence de convertisseurs PDF pdf-> PS pur, c'est la voie à suivre.
Il existe plusieurs bibliothèques PDF pouvant imprimer des PDF. Si vous imprimez sur une imprimante PostScript et utilisez l'option Imprimer vers File, vous pouvez vous retrouver avec PostScript. P>
Une autre solution "EXE Basé", comme Ghostscript, est xpdf.pdftops
PDFTOPTOPS est une application de commande pure. Course sur Win, Linux et Solaris.
http://www.foolabs.com/xpdf/ p>
Peut-être que ce code peut aider:
try { DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE; String psMimeType = DocFlavor.BYTE_ARRAY.POSTSCRIPT.getMimeType(); StreamPrintServiceFactory[] factories = StreamPrintServiceFactory.lookupStreamPrintServiceFactories(flavor, psMimeType); System.out.println ("Available PS services: " + factories.length); if(factories.length == 0) { System.err.println ("No PS factories available!"); System.exit(0); } // Open the PDF file PDFPrint pdfPrint = new PDFPrint ("test.pdf", null); // Open the output file FileOutputStream fos = new FileOutputStream("output.ps"); // Use the first service available StreamPrintService sps = factories[0].getPrintService(fos); DocPrintJob pj = sps.createPrintJob(); // Define paper size PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); aset.add(MediaSizeName.NA_LETTER); // Create simple doc using PDFPrint as Printable and print it SimpleDoc doc = new SimpleDoc(pdfPrint, flavor, null); pj.print(doc, aset); // Close the output PS stream fos.close(); } catch (Throwable t) { t.printStackTrace(); }
Utiliser FOP XSLFO http://xmlgraphics.apache.org/fop/fop-pdf-images.html
fop test.fo -ps out.ps p>
test.fo: p>
Voici ma solution de java pure. Cela fonctionne bien sur Centos, Suse et Windows 7. et aucune installation de tout logiciel n'est nécessaire. Dépendance: P> dependencies {
compile group: 'org.apache.pdfbox', name: 'pdfbox', version: '2.0.8'
}
Merci, j'ai essayé cette option et très capable de convertir PDF en PostScript. Le seul problème que je suis confronté est, lorsque j'envoie un tel fichier à l'imprimante et si le PDF a une orientation mixte comme certaines pages de portrait et certaines sont dans le paysage, le fichier PostScript reconditionné est imprimé en mode portrait ou en mode paysage. . Il devrait gérer automatiquement l'orientation lors de l'impression.
Code Snippet pour impression PS Fichier - P>
DocPrintJob job = service.createPrintJob(); try { PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet(); File psFile = new File (psFilePath); InputStream inputStream = new FileInputStream(psFile); Doc doc = new SimpleDoc(inputStream, DocFlavor.INPUT_STREAM.POSTSCRIPT ,null); job.print(doc, attributes); } catch (Exception e) { e.printStackTrace(); }