bom dia, saudações amigos do guj.
estou com um problema quando tento manipular um pdf, no caso eu tenho q mesclar 2 pdfs para gerar um 3º pdf q é o 1º com o 2º no msm arquivo, isso eu consegui numa boa, esta funcionando redondinho.
o problema é que preciso criar uma copia deste e criptografa em base64 para que seja aberta em outro lugar(não posso dar detalhes do pq é assim) e ai esta o problema ele até gera o novo pdf(a copia da mistura dos 2 pdfs originais), porem ao tentar abri-lo é exibida a seguinte menssagem:
não pode abrir ‘arq0.pdf’ pq não a esse tipo de arquivo ou ele foi danificado(por exemplo, foi enviado como anexo de email e não foi decodificado corretamente)
ja tentei algumas coisas, ja olhei a url e não achei o erro.
se alguem ja passou por esse tipo de problema e puder dar uma luz eu fico realemente agradecido
segue as partes do codigo:
onde cria o 1º pdf(mistura dos 2 pdfs originais) e criptografa em base64, o arquivo gerado nessa parte abre sem problemas
String pathPDFFinal = thisClassURL.getFile().split("WEB-INF")[0] + System.getProperty("file.separator")+ "temp"+ System.getProperty("file.separator")+ "TMP___" + grupo.getCOD_PROPOSTA() + "_" + grupo.getobjeto_analise() + ".pdf";
PdfCopyFields pdfsConcatenados = new PdfCopyFields(new FileOutputStream(pathPDFFinal));
for(grupoLinksGroupBean link : links){
PdfReader pdf = new PdfReader(link.getLink());
pdfsConcatenados.addDocument(pdf);
}
pdfsConcatenados.close();
File filePDF = new File(pathPDFFinal);
String arquivoString = new sun.misc.BASE64Encoder().encode(new byte[(int) filePDF.length()]);
descriptografa o arquivo apartir do “arquivoString” que é retornado pelo metodo acima, esse arquivo é o que esta dando problema
File arquivo = new File("C:/arq"+i+".pdf");
if (arquivo.exists())
arquivo.delete();
OutputStream out = new FileOutputStream("C:/Autorização"+i+".pdf");
byte[] relatorio = new sun.misc.BASE64Decoder().decodeBuffer(pdfBase64);
out.write(relatorio, 0, relatorio.length);
out.close();
java.awt.Desktop.getDesktop().open(arquivo);
a sim, nenhum erro é exibido no console.