Я использую старую версию iText (2.1.7) для объединения PDF-файлов. Потому что это последняя версия под MPL для меня. Я не могу это изменить.
В любом случае. Я пытаюсь объединить несколько PDF-файлов. Кажется, все работает нормально, но когда я перебираю около 1500 страниц, сгенерированный PDF не открывается (ведет себя как поврежденный)
Вот как я это делаю:
private byte[] mergePDFs(List<byte[]> pdfBytesList) throws DocumentException, IOException {
Document document = new Document();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PdfCopy copy = new PdfCopy(document, outputStream);
document.open();
for (byte[] pdfByteArray : pdfBytesList) {
ByteArrayInputStream readerStream = new ByteArrayInputStream(pdfByteArray);
PdfReader reader = new PdfReader(readerStream);
for (int i = 0; i < reader.getNumberOfPages(); ) {
copy.addPage(copy.getImportedPage(reader, ++i));
}
copy.freeReader(reader);
reader.close();
}
document.close();
return outputStream.toByteArray();
}
Это правильный подход? Есть ли в этом что-то, что намекало бы на разрыв при просмотре определенного количества страниц? Нет никаких исключений и тому подобное.