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的方法,包括文本,图形,图像等。

