这篇文章,主要介绍itext7操作PDF文档之创建PDF文档、加载PDF文档、添加空白页、操作PDF页面、itext中的常见类及其方法。
目录
一、itext7操作PDF
1.1、itext7介绍
itext7是一款功能更加强大的PDF文档操作组件,它的功能虽然强大,但是是要收费的,当然也有免费版本的,免费那功能肯定就会有删减,不过免费版本的itext差不多已经可以满足大部分需求了。
itext7和PDFBox类似,但是itext操作PDF比PDFBox更加的强大,itext7是将整个PDF文件抽象为一个PdfDocument对象,文件由多个PdfPage页面或者由单个Document文档对象构成,Document对象默认就表示PDF文档的第一页,在Document之上,可以进行内容的编辑,例如:添加段落、添加表单、图片、添加空白页、设置字体等。itext对PDF文档的读取操作是使用PdfReader类实现,对PDF文档的写出操作是使用PdfWriter类实现。
itext中常见的类有下面这些:
- PdfDocument类:表示整个PDF文件。
- PdfPage类:表示文档中的一个页面。
- Document类:表示PDF文件中的文档对象。
- PdfWriter类:写出PDF文件。
- PdfReader类:读取PDF文件。
- Image类:表示图片对象。
- AreaBreak类:表示某一块内容区域。
- 等等。
下面就介绍一下itext7如何操作PDF文档。
1.2、引入itext-core依赖
我这里使用的是itext-core7.1.16版本,只需要引入一个itext-core依赖即可,因为这个依赖里面已经给我们引入了itext所需要的依赖。
XML
<!-- 引入 itext7-core 依赖 -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>7.1.16</version>
<type>pom</type>
</dependency>
1.3、创建PDF文档
java
package itext.demo.basic;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
/**
* @version 1.0.0
* @Date: 2023/7/19 14:17
* @Author ZhuYouBin
* @Description: itext-core操作PDF文档
*/
public class ITextCreateBlankPDF {
public static void main(String[] args) throws Exception {
// 1、创建Pdf文档
PdfDocument pdfDocument = new PdfDocument(new PdfWriter("D:\\itext.pdf"));
// 2、创建空白页面,必须包含页面,否则创建时候报错
pdfDocument.addNewPage(PageSize.A4);
pdfDocument.addNewPage(PageSize.A4);
// 3、关闭PDF文件
pdfDocument.close();
}
}
1.4、加载PDF文档
itext可以加载已经存在的PDF文档,这需要使用PdfReader类进行读取PDF文档。
java
package itext.demo.basic;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import java.io.IOException;
/**
* @version 1.0.0
* @Date: 2023/7/19 15:19
* @Author ZhuYouBin
* @Description: 加载已有PDF文档
*/
public class ReadPDF {
public static void main(String[] args) throws IOException {
// 1、创建PDF文档对象
PdfDocument pdfDocument = new PdfDocument(new PdfReader("D:\\itext.pdf"));
// 获取总页数
int pages = pdfDocument.getNumberOfPages();
System.out.println(pages);
// 关闭文档
pdfDocument.close();
}
}
1.5、操作PDF页面
PdfDocument类可以操作PDF页面,例如:添加空白页面、删除指定页面、移动页面、获取总页数等。
java
package itext.demo.basic;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfWriter;
/**
* @version 1.0.0
* @Date: 2023/7/19 15:21
* @Author ZhuYouBin
* @Description: PDF页面操作
*/
public class PageOperation {
public static void main(String[] args) throws Exception {
// 1、创建PDF文档
PdfDocument pdfDocument = new PdfDocument(new PdfWriter("D:\\itext.pdf"));
// 2、添加页面
pdfDocument.addNewPage(PageSize.A4);
pdfDocument.addNewPage(PageSize.A4);
pdfDocument.addNewPage(PageSize.A4);
pdfDocument.addNewPage(PageSize.A4);
// 3、移动页面
pdfDocument.movePage(2, 1);
// 4、删除页面
pdfDocument.removePage(1);
// 5、获取第一页
PdfPage firstPage = pdfDocument.getFirstPage();
// 6、获取最后一页
PdfPage lastPage = pdfDocument.getLastPage();
// 7、获取指定页面
PdfPage pdfPage = pdfDocument.getPage(2);
// 关闭文档
pdfDocument.close();
}
}
1.6、添加空白页面
itext可以使用addNewPage()或者addPage()方法添加一个空白页面,除了这种方式之外,还有另外一种方式,那就是使用AreaBreak类,这个类表示一块内容区域,我们可以添加一个空白的内容区域,也可以达到添加空白页面的效果。
AreaBreakType有三个可选值,分别是:
- NEXT_AREA:表示下一块内容区域。
- NEXT_PAGE:表示下一个页面。
- LAST_PAGE:表示最后一个页面,当在PDF最后一个页面使用这个属性,那么不会新增下一个空白页。
java
package itext.demo.basic;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.AreaBreak;
import com.itextpdf.layout.property.AreaBreakType;
import java.io.FileNotFoundException;
/**
* @version 1.0.0
* @Date: 2023/7/19 15:31
* @Author ZhuYouBin
* @Description: 添加空白页面
*/
public class AddBlankPage {
public static void main(String[] args) throws FileNotFoundException {
// 1、创建PDF文档
PdfDocument pdfDocument = new PdfDocument(new PdfWriter("D:\\itext2.pdf"));
// 2、创建文档对象
Document document = new Document(pdfDocument);
// 3、添加空白页面,通过 AreaBreakType.NEXT_PAGE 设置下一个页面
AreaBreak areaBreak = new AreaBreak(AreaBreakType.NEXT_PAGE);
areaBreak.setPageSize(PageSize.A4); // 设置页面大小
document.add(areaBreak);
// 关闭文档
document.close();
pdfDocument.close();
}
}
二、itext常见类和方法
2.1、PdfDocument类
PdfDocument表示PDF整个文件对象,该类提供了如下常见方法:
- addPage():添加PdfPage页面对象。
- addNewPage():添加PdfPage页面对象。
- copyPagesTo():将指定PDF文档中的页面复制到另一个PDF文档里面。
- movePage():移动页面。
- removePage():删除页面。
- addFont():添加字体。
- addFileAttachment():在Document之上添加附件。
- getNumberOfPages():获取页面数量。
- getFirstPage():获取第一页。
- getLastPage():获取最后一页。
- getPage():获取指定页面。
2.2、PdfPage类
PdfPage类表示PDF文档中的一个页面对象,该类常见的方法有:
TODO
2.3、Document类
Document类表示PDF文档对象,PDF中的内容都是基于Document文档对象之上的,该类常见的方法有:
TODO
到此,itext操作PDF文档的基础方法就介绍完啦。
综上,这篇文章结束了,主要介绍itext7操作PDF文档之创建PDF文档、加载PDF文档、添加空白页、操作PDF页面、itext中的常见类及其方法。