【itext7】itext7操作PDF文档之创建PDF文档、加载PDF文档、添加空白页、操作PDF页面、itext中的常见类及其方法

这篇文章,主要介绍itext7操作PDF文档之创建PDF文档、加载PDF文档、添加空白页、操作PDF页面、itext中的常见类及其方法。

目录

一、itext7操作PDF

1.1、itext7介绍

1.2、引入itext-core依赖

1.3、创建PDF文档

1.4、加载PDF文档

1.5、操作PDF页面

1.6、添加空白页面

二、itext常见类和方法

2.1、PdfDocument类

2.2、PdfPage类

2.3、Document类


一、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所需要的依赖。

<!-- 引入 itext7-core 依赖 -->
<dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.1.16</version><type>pom</type>
</dependency>

1.3、创建PDF文档

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文档。

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页面,例如:添加空白页面、删除指定页面、移动页面、获取总页数等。

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最后一个页面使用这个属性,那么不会新增下一个空白页。
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中的常见类及其方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/3602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是从人类反馈中强化学习(RLHF)?

目录 一、什么是RLHF? 二、语言作为强化学习问题 三、用于语言模型的RLHF 四、ChatGPT如何使用RLHF 五、RLHF对语言模型的限制 自从OpenAI公司发布ChatGPT以来&#xff0c;人们对大型语言模型(LLM)的这一重大进步感到兴奋。虽然ChatGPT与其他最先进的大型语言模型大小相同…

数据可视化——根据提供的数据,将数据经过处理后以折线图的形式展现

文章目录 前言处理数据获取数据筛选数据将JSON数据转换为Python数据筛选出横坐标数据和纵坐标数据 根据处理后的数据绘制折线图整体代码展示 前言 前面我们学习了如何使用 pyecharts 模块绘制简单的折线图&#xff0c;那么今天我将为大家分享&#xff0c;如何根据提供的数据将…

【JavaScript 03】语句 变量 变量提升 标识符 注释 区块 作用域 条件语句 循环语句 break continue 标签

JS 语句变量变量提升标识符注释区块条件语句ifif...elseswitch三元运算符 ?: 循环语句whilefordo...whilebreak语句 and continue语句标签 语句 JS程序的执行单位是行&#xff08;line&#xff09; **语句&#xff08;statement&#xff09;**是为了完成特定任务而进行的操作…

STM32(HAL库)驱动SHT30温湿度传感器通过串口进行打印

目录 1、简介 2、CubeMX初始化配置 2.1 基础配置 2.1.1 SYS配置 2.1.2 RCC配置 2.2 软件IIC引脚配置 2.3 串口外设配置 2.4 项目生成 3、KEIL端程序整合 3.1 串口重映射 3.2 SHT30驱动添加 3.3 主函数代 3.4 效果展示 1、简介 本文通过STM32F103C8T6单片机通过HAL库…

【Nginx09】Nginx学习:HTTP核心模块(六)请求头处理

Nginx学习&#xff1a;HTTP核心模块&#xff08;六&#xff09;请求头处理 对于一个 HTTP 应用来说&#xff0c;最重要的其实就是 HTTP 的两个核心功能&#xff0c;一个是请求&#xff0c;一个就是响应。而对于一个 Web 应用服务器来说&#xff0c;响应通常是静态文件或者是动态…

LLM(Large Language Model)大语言模型

涌现&#xff1a; 语言模型够大&#xff0c;训练的语料够多&#xff0c;涌现出推理能力飙升等 常见的大语言模型&#xff1a; GPT-3&#xff08;OpenAI&#xff09;&#xff1a; Generative Pre-trained Transformer 3&#xff08;GPT-3&#xff09;是最著名的LLM之一&#x…

伪3d原理解释 主要是透视投影

当我们将图像投影到一个旋转的表面上时&#xff0c;我们需要考虑以下几个方面&#xff1a; 像素位置的计算&#xff1a;对于每个显示窗口中的像素&#xff0c;我们需要计算它在旋转表面上的位置。在代码中&#xff0c;使用了以下公式来计算旋转表面上的位置&#xff1a; px …

【25】SCI易中期刊推荐——神经网络科学(中科院4区)

💖💖>>>加勒比海带,QQ2479200884<<<💖💖 🍀🍀>>>【YOLO魔法搭配&论文投稿咨询】<<<🍀🍀 ✨✨>>>学习交流 | 温澜潮生 | 合作共赢 | 共同进步<<<✨✨ 📚📚>>>人工智能 | 计算机视觉…

Docker 基本管理与应用

目录 一、Docker介绍 1、docker概述 2、容器优势 3、Docker与虚拟机的区别 4、Docker核心概念 二&#xff1a; 安装 Docker 1、环境准备、安装依赖包 2、 设置阿里云镜像源&#xff0c;安装 Docker-CE并设置为开机自动启动 3、信息查看 ​三&#xff1a;Docker 镜像操作…

【数据结构常见七大排序(三)上】—交换排序篇【冒泡排序】And【快速排序】

目录 前言 1.冒泡排序 1.1冒泡排序动图 1.2冒泡排序源代码 1.3冒泡排序的特性总结 2.快速排序&#x1f451; 2.1hoare版本实现思想 排序前 排序中 排序后 2.2hoare版本快排源代码 2.3分析先走 情况1&#x1f947; 情况2&#x1f948; 前言 交换类排序两个常见的排…

reGeorg搭建http隧道实验

目录 工具下载地址 测试工具 实验 受害者 攻击者 开始测试 工具下载地址

包的使用及其创建

文章目录 前言类名冲突完整的类路径创建包导入类包总结 前言 java语言中&#xff0c;包在整个管理过程中发挥了重要的作用。使用包&#xff0c;可以有效地管理繁多的类文件&#xff0c;解决了类名重复的问题。在类中应用包和权限修饰符&#xff0c;可以控制他人对类成员的方法的…

【Jenkins】Jenkins构建前端流水线

目录 一、前言二、新建前端流水线1、点击新建任务2、填写流水线名称&#xff08;这里我选择的是自由风格的软件项目&#xff09;&#xff0c;任务名称一般格式为&#xff1a;项目名称-前后端3、创建成功后的结果 三、配置前端流水线1、进入刚创建好的任务页面中&#xff0c;点击…

Grafana_数据可视化工具

目录 一、简介 二、安装部署 1、下载 2、安装 3、启用 三、使用简介 1、添加数据源 2、创建DashBoard 3、查看dashboard 4、选择查看的时间段 5、阈值颜色控制 源码等资料获取方法 一、简介 Grafana是一个跨平台开源的纯html/js编写的度量分析和可视化工具&#x…

Meta提出全新参数高效微调方案,仅需一个RNN,Transformer模型GPU使用量减少84%!

近来&#xff0c;随着ChatGPT和GPT-4模型的不断发展&#xff0c;国内外互联网大厂纷纷推出了自家的大语言模型&#xff0c;例如谷歌的PaLM系列&#xff0c;MetaAI的LLaMA系列&#xff0c;还有国内公司和高校推出的一些大模型&#xff0c;例如百度的文心一言&#xff0c;清华的C…

Linux——认识Linux的目录结构 常用命令 vim命令 权限及其控制

目录 linux的目录结构常用linux的命令ls(list)和llcd 切换目录mkdir 创建文件夹touch命令&#xff1a;创建普通文本文件pwd 显示路径whoamisu&#xff1a;普通--超级账号man&#xff1a;查看手册rm&#xff1a;删除网络命令ifconfig重定向 >>cat 查看文本文件clear清屏hi…

kubernetes中特定域名使用自定义DNS服务器出现的解析异常

故障发生背景&#xff1a; 租户反馈生产业务服务连接到中间件的时候&#xff0c;偶尔会有连接失败的情况&#xff0c;然后我们查看对应组件服务正常&#xff0c;手动请求组件服务也显示正常&#xff0c;让租户查看业务服务日志发现报错无法解析对应的域名&#xff0c;我们手动是…

MySQL高阶语句

文章目录 一.常用查询1.按关键字排序&#xff08;ORDER BY 语句&#xff09;1.1 语法格式1.2 ASC和DESC的排序概念1.3 举例1.3.1 数据库有一张info表&#xff0c;记录了学生的id&#xff0c;姓名&#xff0c;分数&#xff0c;地址和爱好1.3.2 按分数排序&#xff0c;默认不指定…

springmvc @RequestMapping注解中produces以及consumes属性的含义(转载请删除括号里的内容)

http协议基础知识 首先需要了解什么叫MediaType&#xff08;媒体类型&#xff09;&#xff1f; 通俗来说&#xff0c;在http协议中&#xff0c;用来表示传输内容的格式就是MediaType&#xff0c;比如text/html&#xff0c;application/json等&#xff0c;其中text代表介质&am…

Python调用ImageMagick生成PDF文件缩略图

使用Python调用ImageMagick生成PDF文件缩略图 Imagemagick使用Ghostscript作为其依赖项之一&#xff0c;以便能够处理和转换PDF相关的图像。 准备 安装Ghostscript&#xff0c;网站安装ImageMagick&#xff0c;网站 安装完毕后&#xff0c;需要自行配置环境路径 脚本 使用示…