Нежелательные символы появляются при декодировании данных в базе 64 - PullRequest
0 голосов
/ 26 марта 2019

Я получаю PDF-содержимое в кодировке Base 64.Я пытался декодировать его с помощью NIFI с процессором Base64EncodeContent.Расшифрованный файл отправляю по почте.Ниже приведен небольшой пример выходных данных, приходящих по почте.

введите описание изображения здесь

"Данные не должны быть доступны в. ¹ Проверьте, отправлены ли. Все документы отправлены.в формате pdf на * 9: '³:> <âA m¬² @% é‚ÇŽÇ ¢ | ÀÈ ™ $ Éز§Uû ÷ LÒTB¨ l, $åù˜ $ â´º? 6N¬JC¤ŒÃ ° ‰ _Ïg -æ¿; ‰ Û ÛÛÖYl`õ? èÓÌ [ÿÿ PK "</p>

Как извлечь данные в PDF, отправленные третьей стороной?

Я попытался декодировать его, используя код JAVA, и тамтакже его провал.Не удается открыть PDF, сюда также приходят ненужные символы.

Преобразованный файл JPGPDF.pdf, используемый ниже, содержит строку в кодировке Base64.

    String filePath = "C:\\Users\\xyz\\Desktop\\";
    String originalFileName = "ConvertedJPGPDF.pdf";
    String newFileName = "test.pdf";

    byte[] input_file = 
    Files.readAllBytes(Paths.get(filePath+originalFileName));


   // byte[] decodedBytes = Base64.getDecoder().decode(input_file);
    byte[] decodedBytes1 = Base64.getMimeDecoder().decode(input_file);


    FileOutputStream fos = new FileOutputStream(filePath+newFileName);
    fos.write(decodedBytes1);
    fos.flush();
    fos.close();

1 Ответ

1 голос
/ 26 марта 2019

Вы упомянули, что файл уже содержит строку в кодировке base64.

Файл ConvertedJPGPDF.pdf, используемый ниже, содержит строку в кодировке Base64.

Итак, вам не нужно запускать эту строку:

byte[] encodedBytes = Base64.getEncoder().encode(input_file);

Тем самым вы пытаетесь снова закодировать эти байты.

Непосредственное декодирование массива input_file, а затем сохранение полученного байтового массива в файл .pdf.

Обновление:

На самом деле ConvertedJPGPDF.pdf не обязательно должно называться .pdf. Это действительно простой текстовый файл, учитывая, что он закодирован в формате base64.

В любом случае, у меня работает следующий фрагмент кода:

    String filePath = "C:\\Users\\xyz\\Desktop\\";
    String originalFileName = "ConvertedJPGPDF.pdf";
    String newFileName = "test.pdf";

    byte[] input_file = Files.readAllBytes(Paths.get(filePath+originalFileName));

    byte[] decodedBytes1 = Base64.getMimeDecoder().decode(input_file);

    Files.write(Paths.get(filePath+newFileName), decodedBytes1);

Надеюсь, это поможет!

...