使用itext 5.5.6和pdfStamper

时间:2015-08-27 14:08:20

标签: pdf itext 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 on pdf压模,则生成的文件会损坏并且图像上没有显示。

另一方面,如果我们不使用FullCompression,则使用标记的图像文件是正确的。

有没有办法在pdf上使用pdfStamper上的fullCompresion添加图片?

感谢您阅读

1 个答案:

答案 0 :(得分:1)

向上移动此行:

PdfStamper.setFullCompression();

确保在创建PdfStamper实例后立即使用此方法,问题将得到解决。