Всякий раз, когда вы открываете что-то, вы должны в конечном итоге закрыть его снова, в частности, поскольку закрытие может включать в себя больше, чем освобождение ресурсов, это может также включать добавление последнего фрагмента к записанным данным.
Это также имеет место здесь, вы открываете Document document
:
document.open();
, но не закрываете его после этого.Таким образом, PDF-файл, записанный в ByteArrayOutputStream baos
, является неполным, по крайней мере, отсутствуют окончательная таблица перекрестных ссылок объектов PDF и трейлер.
Таким образом, закройте document
, прежде чем работать с результатом в baos
:
for (int i = 0; i < readers.size(); i++) {
[...]
}
document.close();
byte[] pdfRetorno = baos.toByteArray();
return pdfRetorno;