2017-05-09 4 views
1

Da ich Code, der alle Anlagen in der Post decodiert:PDF-Anhänge werden nach Datei-Decodierung beschädigt

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

Nach der Codierung und Decodierung zurück, ich einige Probleme konfrontiert, wie:

Original-PDF:% âÏÏÓ

Transformierte PDF:%

Original PDF: H ‰ d; 1D2' ° l'Χ ¥ ¡¢ @ ²Ü¿À † xo & Ò> iG ~ € Epo ·

Transformed PDF: Hd; 1D 2' l'Χ @ ܿ X & қ G ~ p

Gibt es eine Möglichkeit, den Inhalt beim Codieren-Decodieren nicht zu beschädigen?

+1

PDF-Dateien sind Binärdateien. Sie erzwingen die Binärdaten in einen String: 'new String (...)'. Dies schadet den binären PDF-Daten, abhängig von der verwendeten Codierung, sogar über die Reparatur hinaus. Handle binäre Anhänge stattdessen als Binärdateien, z. als 'byte []' oder als 'ByteBuffer'. – mkl

Antwort

1

PDF-Dateien sind Binärdateien; sie können insbesondere beliebige Bytefolgen enthalten.

zwingen Sie die binären Daten in einen String:

return new String(...); 

Je nach Codierung in dieser Transformation gegeben oder angenommen, diese Schäden die binären PDF-Daten, wahrscheinlich sogar mehr zu reparieren.

So behandeln Sie bitte binäre Anlagen stattdessen als Binärdateien, z. als byte[] oder als ByteBuffer.

Verwandte Themen