Ошибки при добавлении изображений в pdf с использованием itext 5.5.6 и FullCompression на pdfStamper
На прошлой неделе мы обновились с Itext 5.3.6 до 5.5.6, во время нашего теста мы обнаружили проблемы с добавлением изображений в существующий PDF с включенным полным сжатием. Смотрите следующий пример кода:
try {
byte[] imageByte = IOUtils.toByteArray(new FileInputStream("imageToStamp.png"));
InputStream input = new FileInputStream("originalFile.pdf");
byte[] inputBytes = IOUtils.toByteArray(input);
OutputStream output = new FileOutputStream("originalFileStamped.pdf");
PdfReader pdfReader = new PdfReader(new ByteArrayInputStream(inputBytes));
PdfStamper pdfStamper = new PdfStamper(pdfReader,output);
Image image = Image.getInstance(imageByte);
for(int i=1; i<= pdfReader.getNumberOfPages(); i++){
PdfContentByte content = pdfStamper.getUnderContent(i);
image.setAbsolutePosition(100f, 700f);
content.addImage(image);
}
//Full Compresión breaks the final pdf , if you comment that line the final PDF will had the images.
pdfStamper.setFullCompression();
pdfStamper.close();
} catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
Если мы используем FullCompression на штампе pdf после добавления какого-либо изображения, результирующий файл будет поврежден, а изображения не появятся на нем.
С другой стороны, если мы не используем FullCompression, файл верный с отпечатанными изображениями.
Есть ли способ использовать fullCompresion на pdfStamper на pdf с добавленными изображениями?
Спасибо за прочтение
1 ответ
Решение
Переместить эту строку вверх:
PdfStamper.setFullCompression();
Убедитесь, что этот метод используется сразу после создания PdfStamper
экземпляр и проблема будет решена.