PDF Renderer avvitando i miei file PDF?
Domanda
Sto cercando di stampare file PDF silenziosi dall'interno di un'applicazione Java (più precisamente un J2EE Webapp).
In questa applicazione che sto creando file PDF con iText. I file creati sono lettere tipo, ognuno composto da esattamente una pagina.
Per effettuare il rendering e stampare questi file PDF Ho cercato di usare la libreria pdf-renderer. (Vedi qui: https://pdf-renderer.dev.java.net/ )
Ho trovato un po 'di codice di esempio utile a http://juixe.com/techknow/index.php/2008/01/17/print-a-pdf-document-in-java/ e in effetti, non passò molto tempo fino a quando sono stato in grado di stampare il primo documento dalla mia macchina di lavoro.
Ma ora arriva la parte divertente:
Dopo aver stampato ciascuno dei file PDF è stato in qualche modo incasinato. Era ancora leggibile e tutto, ma tutta la formattazione è andato un po 'folle. Linebrakes dove non dovrebbero essere, manufatti di errore nella immagine contenuta, unterlining testo si raggiunge un tratto più o meno lungo come supposto ...
Inoltre ciò che è stato stampato è stato anche questo 'violato up' la versione ... Quindi credo che l'errore deve essere da qualche parte nel processo di rendering.
Questo è il codice sorgente di responsabile per l'intero processo di rendering e la stampa:
File f = this.file; //This accesses the created PDF file
FileInputStream fis = new FileInputStream(f);
FileChannel fc = fis.getChannel();
ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
PDFFile pdfFile = new PDFFile(bb); // Create PDF Print Page
PDFPrintPage pages = new PDFPrintPage(pdfFile);
// Create Print Job
PageFormat pf = PrinterJob.getPrinterJob().defaultPage();
pjob.setJobName(f.getName());
Book book = new Book();
book.append(pages, pf, pdfFile.getNumPages());
pjob.setPageable(book);
Un altro fatto divertente: L'avvitamento del PDF avviene solo sui documenti PDF iText creati. Se provo a stampare qualche casuale altro PDF non ottiene straziati.
Tutte le idee su ciò che il problema potrebbe essere? E come può il rendering influenzare i miei PDF è affatto? A quanto ho capito questo codice Scource, la modalità READ_ONLY dovrebbe impedire esattamente questo ...
EDIT: Ho appena visto che la stampa di un iText creato PDF rimuove anche i font incorporati. Anche in questo caso, prima del rendering / stampa tramite pdf-renderer questo ha funzionato perfettamente bene. (Font anche mostrato nelle proprietà del PDF, ecc ...)
Soluzione
Forse iText è la creazione di file PDF che non sono compatibili con il renderer? Hai controllato la versione PDF crea? Forse è possibile specificare una versione precedente?