2017-05-09 77 views
1

在那里,我有一个解码所有附件在我的邮箱代码:PDF附件文件的解码后损坏

for (String key : attachments.keySet()) { String fileContent = attachments.get(key); attachments.put(key, getEncodedPartFromAttachment(fileContent)); }

private String decodeFileContent(String encodedData) { return new String(Base64.getDecoder().decode(encodedData)); }

编码和解码后回来,我面临着一些问题,如:

原文PDF:%Ó012

转换后的PDF:%

原始PDF:H‰d; 1D2' °L'Χ¥¡¢@²Ü¿À†XO & O> IG〜€EPO·

转化PDF:HD; 1D 2' l'Χ @ ܿ X &қ G〜 p

有没有办法在编解码时破坏内容?

+1

PDF文件是二进制文件。您可以将二进制数据强制为一个字符串:'new String(...)'。这会损害二进制PDF数据,取决于使用的编码甚至无法修复。改为将二进制附件作为二进制文件处理,例如作为'byte []'或者'ByteBuffer'。 – mkl

回答

1

PDF文件是二进制文件;它们特别可以包含任意的字节序列。

你强制二进制数据转换成字符串:

return new String(...); 

根据在这种转变给或承担的编码,这损害了二进制的PDF数据,甚至可能无法修复。

因此,请将二进制附件作为二进制文件处理,例如,如byte[]ByteBuffer