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