Buongiorno,
chiedo gentilmente assistenza per un problema che non riesco a risolvere da alcuni giorni.
Innanzitutto descrivo quello che sto facendo:
leggo un documento da un CLOB in Oracle, compresso in B64. Prima di darlo in pasto alla procedura di stampa lo decodifico per leggere il PDF e lo butto in uno StringBuffer.
A questo punto con la libreria PdfRenderer stampo il documento su foglio A4.
Le dimensioni (calcolati in point) mi sembrano corrette. L'area di stampa è calcolata: 1 cm i margini superiore - inferiore - sinistra e destra. Lo spazio di stampa va quindi dai 19 cm circa ai 27.59 cm, ma alla fine il documento mi viene stampato quasi rimpicciolito, non sfruttando tutta l'area che ho impostato.
Posto sotto il codice (che si trova su tantissimi siti):
ByteBuffer buf = stampaPDF();
PDFFile pdfFile = new PDFFile(buf);
// Creo la pagina di stampa del PDF
PDFPrintPage printPage = new PDFPrintPage(pdfFile);
// Creo il Print Job
PrinterJob printerJob = PrinterJob.getPrinterJob();
PageFormat pageFormat = PrinterJob.getPrinterJob().defaultPage();
//Calcolo il formato e i margini per un foglio A4
float pageWidth = MediaSize.ISO.A4.getX(MediaSize.INCH) * 72;
float pageHeight = MediaSize.ISO.A4.getY(MediaSize.INCH) * 72;
float margin = (1 / 2.54f) * 72; //1cm
Paper paper = new Paper();
//Setto il formato
paper.setSize(pageWidth, pageHeight);
//Setto i margini
paper.setImageableArea(margin, margin, pageWidth - 2 * margin,pageHeight - 2 * margin);
//paper.setImageableArea(margin, margin, pageWidth,pageHeight);
pageFormat.setPaper(paper);
//Valido il formato
pageFormat = printerJob.validatePage(pageFormat);
//Configuro il job di stampa
printerJob.setJobName("PROVA");
Book book = new Book();
book.append(printPage, pageFormat, pdfFile.getNumPages());
printerJob.setPageable(book);
// Invio la richiesta di stampa alla stampante di default
printerJob.print();
Qualcuno ha già affrontato questo tipo di problema?
Mi potete cortesemente aiutare?
Grazie