Я пытаюсь преобразовать двоичный файл, содержащий несколько изображений внутри, в документ pdf, используя java, с помощью itextpdf было единственным решением, которое я получил преобразованный файл в правильном формате, но проблема здесь заключается в том, что на выходе он предоставил мне только одно изображение (первое) и потерял остальные, которые находятся внутри двоичного файла.
Я уже доказал, что использую itextpdf для добавления изображений в документ, а также некоторые другие решения, подобные этому:
https://www.mkyong.com/java/how-to-convert-array-of-bytes-into-file/
или
Создать PDF из двоичных данных в Java
Как я понимаю, проблема в моем случае заключается в том, что я прочитал свой двоичный файл и сохранил их в байте [], а после того, как я передал содержимое файла в Vector,
Я создал функцию, которая получает в качестве аргумента Vector и создает PDF-файл с изображениями внутри, проблема в том, что он вставляет только первое изображение в PDF-файл, поскольку он не может отделить внутри Vector конец первого изображение и начало второго изображения, как в этом случае (файлы изображений JPEG начинаются с FF D8 и заканчиваются FF D9.):
Как определить содержимое байта [] в формате JPEG?
File imgFront = new File("C:/Users/binaryFile");
byte[] fileContent;
Vector<byte[]> records = new Vector<byte[]>();
try {
fileContent = Files.readAllBytes(imgFront.toPath());
records.add(fileContent); // add the result on Vector<byte[]>
} catch (IOException e1) {
System.out.println( e1 );
}
...
public static String ImageToPDF(Vector<byte[]> imageVector, String pathFile) {
String FileoutputName = pathFile + ".pdf";
Document document = null;
try {
FileOutputStream fos = new FileOutputStream(FileoutputName );
PdfWriter writer = PdfWriter.getInstance(document, fos);
writer.open();
document.open();
//loop here the ImageVector in order to get one by one the images,
//but I get only the first one
for (byte[] img : imageVector) {
Image image = Image.getInstance(img);
image.scaleToFit(500, 500); //size
document.add(image);
}
document.close();
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
return FileoutputName ;
}
Я ожидаю, что в pdf будут все изображения внутри, а не только одно.