Bonjour,
Je souhaite réaliser un bout de code qui imprime un fichier PDF sans que rien ne se produise à l'écran en dehors de du programme principal, même pas ouvrir acrobat reader.
J'ai donc développé le bout de code suivant :
Je n'arrive pas à obtenir un résultat satisfaisant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 byte[] byteTab = getBytesFromFile(file); DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PAGEABLE; PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService(); if ( defaultService != null ) { if(defaultService.isDocFlavorSupported(flavor)){ //Premiere solution PdfDecoder decodePDF = new PdfDecoder( true ); decodePDF.openPdfArray( byteTab ); decodePDF.setUsePDFPaperSize(true); Paper paper = new Paper(); PageFormat pageFormat = new PageFormat(); pageFormat.setPaper(paper); PrinterJob printJob = PrinterJob.getPrinterJob(); printJob.setPrintable(decodePDF, pageFormat); printJob.print(); } } //Deuxieme solution DocPrintJob job = defaultService.createPrintJob(); flavor = DocFlavor.SERVICE_FORMATTED.PAGEABLE; PdfDecoder decodePDF = new PdfDecoder(true); decodePDF.openPdfArray( byteTab ); decodePDF.setUsePDFPaperSize(true); DocAttributeSet das = new HashDocAttributeSet(); Doc doc = new SimpleDoc(decodePDF, flavor, das); PrintRequestAttributeSet attrs = new HashPrintRequestAttributeSet(); job.print(doc, attrs);
1ere solution, cela rajoute des marges lors de l'impression. Le fichier PDF d'origine est transformé.
2eme solution, cela n'imprime que la première page dans le cas ou le fichier pdf est sur plusieurs pages. J'ai cherche une méthode pour modifier un paramètre d'impression de nombre de page, mais je n'ai rien trouvé.
Merci pour vos conseils.
Partager