views:

360

answers:

1

I am trying to silent print PDF files from within a java application (mroe specifically a J2EE Webapp).

Within this application I am creating PDF files with iText. The files created are form letters, each consisting of exactly one page.

To render and print out this PDF files I tried to use the pdf-renderer library. (See here: https://pdf-renderer.dev.java.net/ )

I found some useful example code at http://juixe.com/techknow/index.php/2008/01/17/print-a-pdf-document-in-java/ and indeed, it wasn't long until I was able to print the first document from my working machine.

But now comes the funny part:

After printing each of the PDF files was somehow screwed up. It was still readable and everything, but the whole formatting went a bit crazy. Linebrakes where they should not be, error artifacts in the image contained, unterlining of text is suddenly longer or shorter as supposed...

Furthermore what was printed was also this 'hacked up' version... So I guess the error has to be somewhere in the rendering process.

This is the source code responsible for the whole rendering and printing process:

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);

Another fun fact: The screwing up of PDF's only happens on the created iText PDF documents. If I try to print some random other PDF it does not get mangled.

Any ideas about what the problem could be? And how can the rendering affect my PDF's at all? As I understand this scource code, the READ_ONLY mode should prevent exactly that...

EDIT: I just saw that printing an iText created PDF also removes the embedded fonts. Again, before rendering/printing via pdf-renderer this worked perfectly fine. (Fonts also showed up in the PDF properties, etc. ...)

A: 

Maybe iText is creating PDF files which are not compatible with your renderer? Have you checked what PDF version it creates? Maybe it is possible to specify an older version?

Martin Wickman
I don't believe thats the problem. All the files I tried to print have version PDF-1.4.
fgysin