Java IText:修改现有的PDF文档

时间:2020-01-09 10:36:09  来源:igfitidea点击:

IText可以以许多不同的方式修改现有的PDF文件。在这里,我仅介绍用文本或者图像标记现有PDF的最常用的修改之一。获得" IText in Action"一书,以获取有关处理现有PDF文档的完整故事。

如果我们已经有一个完成的PDF,并且只想向其添加页眉,页脚或者水印,则IText将提供com.itextpdf.pdf.PdfStamper类。

首先,我们使用" PdfReader"读取现有文档,然后使用" PdfStamper"对其进行修改。

这是一个简单的代码示例:

import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;

import java.io.FileOutputStream;
import java.io.IOException;

public class PdfStamperExample {

  public static void main(String[] args) {
    try {
      PdfReader pdfReader = new PdfReader("HelloWorld.pdf");

      PdfStamper pdfStamper = new PdfStamper(pdfReader,
            new FileOutputStream("HelloWorld-Stamped.pdf"));

      Image image = Image.getInstance("watermark.png");

      for(int i=1; i<= pdfReader.getNumberOfPages(); i++){

          PdfContentByte content = pdfStamper.getUnderContent(i);

          image.setAbsolutePosition(100f, 700f);

          content.addImage(image);
      }

      pdfStamper.close();

    } catch (IOException e) {
      e.printStackTrace();
    } catch (DocumentException e) {
      e.printStackTrace();
    }
  }
}

向PDF文档添加内容

要将内容添加到文档,我们需要从PdfStamper访问PdfContentByte。我们可以在PDF文档中现有内容的上方或者下方添加内容。这是从" PdfStamper"获取" PdfContentByte"的方法。

PdfContentByte underContent = pdfStamper.getUnderContent(1);

PdfContentByte overContent  = pdfStamper.getOverContent(1);

作为参数传递的数字是要获取上下或者上下内容的页面的页码。

PdfContentByte对象具有将各种内容添加到PDF的方法,包括文本,图形,图像等。