Ваша строка не является допустимым файлом PDF. Файл pdf должен начинаться с правильного Magi c числа (см. Раздел Индикаторы формата этой ссылки)
PDF-файлы начинаются с «% PDF» (шестнадцатеричное 25 50 44 46).
или в Base64: JVBERi
, если вы попробуете свой код с допустимой строкой в кодировке PDF например, этот , это может сработать.
Но поскольку вы не предоставили код своего класса BASE64Decoder
, трудно быть уверенным, что он будет работать.
По этой причине, вот простая реализация пакета java.util.Base64
(Предупреждение не копируйте / пропускайте этот пример и не пробуйте его перед изменением данной строки base64 здесь с правильным, как указано в предыдущей ссылке ... как указано в нижеследующем комментарии, для того, чтобы быть коротким, правильная строка была заменена поврежденной)
import java.io.File;
import java.io.FileOutputStream;
import java.util.Base64;
class Base64DecodePdf {
public static void main(String[] args) {
File file = new File("./test.pdf");
try ( FileOutputStream fos = new FileOutputStream(file); ) {
// To be short I use a corrupted PDF string, so make sure to use a valid one if you want to preview the PDF file
String b64 = "JVBERi0xLjUKJYCBgoMKMSAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvRmlyc3QgMTQxL04gMjAvTGVuZ3==";
byte[] decoder = Base64.getDecoder().decode(b64);
fos.write(decoder);
System.out.println("PDF File Saved");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Кредит: источник .