PDFBOX - Problema ao salvar arquivo PDF

5 respostas
R

Bom dia senhores,

Estou com um problema e até agora não consegui resolver.

Bom, meu sistema funciona mais ou menos assim, leio um arquivo PDF, verifico quais páginas são de uma determinada empresa, e salvo em um único arquivo todas páginas deste cliente.

Quando o pdfbox le arquivos PDF 1.5 ele salva normal o meu arquivo. Mas quando o pdfbox le arquivo PDF 1.3 ele consegue realizar a leitura e até consegue salvar, mas quando vou abrir ele da o erro abaixo.

"Há um erro nesta página. Talvez o acrobat não exiba a página corretamente. Entre em contato com a pessoa que criou o documento PDF para corrigir o problema"

Segue o trecho do código onde eu faço a lógica...

public void uploadPDF(FileUploadEvent event) throws IOException {

            List<Cliente> clienteList = new ClienteDAO().listarClientes();
            InputStream fileInputStream = event.getFile().getInputstream();
            PDFParser parser = new PDFParser(fileInputStream);
            parser.parse();
            pdfDocument = parser.getPDDocument();

            PDDocumentCatalog pddocC = pdfDocument.getDocumentCatalog();
            List<PDPage> pages = pddocC.getAllPages();

            int i= 0;
            for(Cliente cliente : clienteList){

                i =0;

                //Inicia o DTO que mostra na tela
                FatiarArquivosDTO linhaFatiarArquivos = new FatiarArquivosDTO();
                linhaFatiarArquivos.setNomeEmpresa(cliente.getNome());
                linhaFatiarArquivos.setIdEmpresa(cliente.getIdCliente());
                linhaFatiarArquivos.setCnpjcpf(cliente.getCnpjcpf());

                //Declarando lista de página do Cliente
                List<PDPage> listaPages = new ArrayList<PDPage>();

                for(PDPage pDPage : pages){

                    if(pDPage.getContents().getInputStreamAsString().indexOf(cliente.getCnpjcpf())!=-1){
                        listaPages.add(pDPage);
                    }
                i++;
                }

                linhaFatiarArquivos.setListPagina(listaPages);

                if(listaPages.size()>0){
                    getListaTabela().add(linhaFatiarArquivos);
                }

            }

        }

5 Respostas

E

Será que é interessante converter o arquivo de 1.3 para 1.5 (usando uma outra ferramenta qualquer), e então ler o tal arquivo convertido para poder salvá-lo corretamente? Pode ser que o pdfBOX não consiga realmente salvar corretamente arquivos em especificações antigas do formato.

http://www.freedownloadscenter.com/Multimedia_and_Graphics/Misc__Graphics_Tools/PDF_Version_Converter.html
(Não testei a ferramenta, é óbvio)

R

entanglement, quando eu converto eu consigo trabalhar com PDF, mas o meu problema é que os arquivos estão sendo gerados em 1.3, e não gostaria que meu usuário fizesse esta conversão, pois eu sei que se depender de usuário eu tô na roça. rs

Abraços!

E

Mas não é para o usuário fazer a conversão - ele nem deve saber a versão do PDF que ele está gerando :slight_smile:
Eu suponho que exista alguma ferramenta que você mesmo possa chamar em seu programa e que pegue um arquivo 1.3 e converta para outro arquivo 1.5 .

R

Você diz uma biblioteca que faça isso?

R

Eu suspeito que seja o armazenamento do conteúdo das páginas nos objetos de PDPAGE, ele fica no padrão original da versão (1.3) do relatório.

E quando eu crio um novo PDFDOCUMENT ele vem como padrão 1.5 (Também suspeito), pois quando eu adiciono o PDPAGE com as páginas do 1.3 ele gera o arquivo PDF e quando eu tento abrir da a mensagem de erro.

Já verifiquei a documentação do PDFBOX e não encontrei nada a respeito.

Alguma luz???

Criado 1 de agosto de 2012
Ultima resposta 2 de ago. de 2012
Respostas 5
Participantes 2