Renderizador em pdf estragando meus pdfs?
Pergunta
Estou tentando imprimir arquivos PDF silenciosos de um aplicativo Java (mais especificamente um J2EE WebApp).
Dentro deste aplicativo, estou criando arquivos PDF com o ITEXT. Os arquivos criados são letras do formulário, cada uma consistindo exatamente em uma página.
Para renderizar e imprimir esses arquivos PDF, tentei usar a Biblioteca de Renderizador PDF. (Veja aqui: https://pdf-renderer.dev.java.net/ )
Eu encontrei algum código de exemplo útil em http://juixe.com/techknow/index.php/2008/01/17/print-a-pdf-document-in-java/ E, de fato, não demorou muito para que eu pudesse imprimir o primeiro documento da minha máquina de trabalho.
Mas agora vem a parte engraçada:
Depois de imprimir cada um dos arquivos PDF, de alguma forma foi estragado. Ainda era legível e tudo mais, mas toda a formatação ficou um pouco louca. Linera -se onde não deveriam estar, os artefatos de erro na imagem contidos, a iluminação do texto é subitamente mais longa ou mais curta como suposta ...
Além disso, o que foi impresso também foi essa versão 'hackeada' ... então acho que o erro deve estar em algum lugar no processo de renderização.
Este é o código -fonte responsável por todo o processo de renderização e impressão:
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);
Outro fato divertido: o estrago dos PDFs ocorre apenas nos documentos criados em PDF ITEXT. Se eu tentar imprimir algum outro pdf aleatório, ele não será mutilado.
Alguma idéia sobre qual poderia ser o problema? E como a renderização pode afetar meus PDFs? Pelo que entendi esse código de limpeza, o modo read_only deve evitar exatamente isso ...
EDIT: Acabei de ver que a impressão de um PDF criada no ITEXT também remove as fontes incorporadas. Novamente, antes de renderizar/imprimir via renderizador de PDF, isso funcionou perfeitamente bem. (As fontes também apareceram nas propriedades do PDF, etc. ...)
Solução
Talvez o ITEXT esteja criando arquivos PDF que não são compatíveis com seu renderizador? Você verificou qual versão em PDF ele cria? Talvez seja possível especificar uma versão mais antiga?