Java操作PDF文件,就是如此简单
maven 依赖
使用 iText 的时候需要用 maven 依赖如下:
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itext7-core</artifactId> <version>7.2.0</version> <type>pom</type> </dependency>
简单实例
建立 PDF 需要 4 个步骤:
- 创建 一个 PdfWriter,用于定义 pdf 的路径地址
- 创建一个 pdf 文档,Document,与 PdfWriter 关联
- 向文档中添加内容
- 关闭文档
下面从 hello world 开始。
import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.layout.Document; import com.itextpdf.layout.element.Paragraph; public class PDFDemo { public static void main(String[] args) { try{ PdfWriter pdfWriter = new PdfWriter("./demo.pdf"); PdfDocument pdfDocument = new PdfDocument(pdfWriter); Document document = new Document(pdfDocument); document.add(new Paragraph("Hello World")); document.close(); }catch(Exception e){ e.printStackTrace(); } } }
示例结果:
中文
iText 不支持默认是不支持中文字体的,所以需要定义 PdfFont 中文字体样式。使用 PdfFontFactory 的 createFont 创建一个中文字体,并将中文字体设置到 document 中。
public static void main(String[] args) { try{ PdfWriter pdfWriter = new PdfWriter("./demo1.pdf"); PdfDocument pdfDocument = new PdfDocument(pdfWriter); //字体文件可以使用 windows 系统中的 PdfFont font = PdfFontFactory.createFont("E:\\pdfProject\\src\\main\\java\\simhei.ttf"); Document document = new Document(pdfDocument).setFont(font); document.add(new Paragraph("Hello World!你好,itext")); document.close(); }catch(Exception e){ e.printStackTrace(); } }
示例结果:
表格
在项目中经常需要 PDF 文件中打印表格,这时就可以使用 Table 对象,创建一个个单元格并将表格内容写入单元格中。
public static void main(String[] args) { try{ PdfWriter pdfWriter = new PdfWriter("./demo2.pdf"); PdfDocument pdfDocument = new PdfDocument(pdfWriter); PdfFont font = PdfFontFactory.createFont("E:\\pdfProject\\src\\main\\java\\simhei.ttf"); Document document = new Document(pdfDocument).setFont(font); Table table = new Table(4); table.setWidth(500); table.addHeaderCell("header 1").addHeaderCell("header 2").addHeaderCell("header 3").addHeaderCell("header 4"); for(int i = 0; i < 16; i++) { table.addCell("cell " + i); } document.add(table); document.close(); }catch(Exception e){ e.printStackTrace(); } }
示例结果:
图片
图片的设置也很简单,创建 Image 对象填充到 document 中就可以了。
public static void main(String[] args) { try{ PdfWriter pdfWriter = new PdfWriter("./demo3.pdf"); PdfDocument pdfDocument = new PdfDocument(pdfWriter); PdfFont font = PdfFontFactory.createFont("E:\\pdfProject\\src\\main\\java\\simhei.ttf"); Document document = new Document(pdfDocument).setFont(font); Image img = new Image(ImageDataFactory.create("E:\\pdfProject\\src\\main\\java\\img.png")); document.add(img.setAutoScale(true)); document.close(); }catch(Exception e){ e.printStackTrace(); } }
示例结果:
总结
本文从 iText 最基本的用法,分别介绍从表格,图片,中文来介绍 iText,希望能够帮助到你。
Java操作PDF文件,就是如此简单相关推荐
- java操作PDF文件,可支持分页、合并、图片转PDF等
java操作PDF,有一个很好用的工具--pdfbox.只需要引入依赖,即可使用. <dependency><groupId>org.apache.pdfbox</gro ...
- java中pdf写成base64文件流,Java操作pdf文件与Base64编码相互转换与文件流操作
1.第一步,引入bc包的安装依赖. 在pom.xml中引入. org.bouncycastle bcprov-jdk15on 1.60 引入后reimport一下项目. 2.pdf文件转换成Base6 ...
- JAVA操作PDF文件
PDF插入表单或图片 PDF插入表单数据前需要对模板进行处理,使用Adobe Acrobat DC 的准备表单功能添加文本域 表单数据MAP里的KEY必须与PDF添加的域名称一致才能添加进去 impo ...
- Java操作pdf文件与Base64编码相互转换与文件流操作
1.第一步,引入bc包的安装依赖. 在pom.xml中引入. <!-- https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jd ...
- Java使用PDFBOX操作pdf文件(一,加载和创建pdf)
前言: 之前想学习使用Java操作pdf的时候看过了IText的文档.确实IText的文档很全,也有一个官网可以很方便的查找信息.但IText的开源协议为AGPL,使用者必须传染性的开源代码,商业使用 ...
- java操作properties文件简单学习
java操作properties文件的工具类简单封装: 注意:由于本地和环境和linux服务的路径有区别,或者jetty,resin,tomcat部署后,文件的路径也是有区别的.比如我们在linux上 ...
- bfo java_Java操作PDF文件(BFO) | 学步园
上一次我们用iText这个工具在Java环境下操作PDF文件,现在我们换一个工具:BFO iText的确小巧,但是功能也有限制,只能简单的生成PDF文件,BFO却不同,能设置字体.版面等元素. 最新版 ...
- 如何用 Java 对 PDF 文件进行电子签章
转自:如何用 Java 对 PDF 文件进行电子签章 - Ferocious - 博客园 一.概述 二.技术选型 三.生成一个图片签章 四.如何按模板生成PDF文件 五.如何生成PKSC12证书 六. ...
- JAVA操作pdf——创建表格
JAVA操作pdf--创建表格 一.前言 在实习的时候遇到了需要将查询到的数据构建成为PDF的情况,于是在网上查找到了相关的Java操作pdf的教程,看到大部分的文章都是使用ITextPdf操作的,于 ...
最新文章
- 实验三 ShellShock 攻击实验
- group plot simplest approach in matlab
- linux简单使用命令发送邮件
- android录音播放列表,android数据库里的视频,图片,音频表
- mysql 数据库event_mysql数据库事件调度(Event)
- 场景文字识别的算法创新与应用,来自百度的技术前沿
- Unity3D基础18:物体查找与控制
- php 如何将100w级的数据入库。
- ChinaDDoS BGP 流量牵引二层VLAN回注配置
- 北大青鸟S1结业项目团队第一名——Myktv前端
- ArcGIS Server Flex API接入MapABC地图
- suse linux raid驱动,安装SuSE使用嵌入式SATA控制器用常见设备使用情况的megaSR swraid驱动程序...
- Java实现 蓝桥杯VIP 算法提高 盾神与砝码称重
- html水晶按钮图片,css 如何实现一个水晶按钮的效果呢?
- JAVA基础之HttpServletResponse响应
- 2.2 DP: Value Iteration Gambler‘s Problem
- 基于Spring Boot的农家乐点餐系统
- 实验吧WEB CTF 猫抓老鼠 全网最简单易懂的解题方法
- MySQL安装--无法初始化
- 财富500强排名(2010)