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文件,就是如此简单相关推荐

  1. java操作PDF文件,可支持分页、合并、图片转PDF等

    java操作PDF,有一个很好用的工具--pdfbox.只需要引入依赖,即可使用. <dependency><groupId>org.apache.pdfbox</gro ...

  2. java中pdf写成base64文件流,Java操作pdf文件与Base64编码相互转换与文件流操作

    1.第一步,引入bc包的安装依赖. 在pom.xml中引入. org.bouncycastle bcprov-jdk15on 1.60 引入后reimport一下项目. 2.pdf文件转换成Base6 ...

  3. JAVA操作PDF文件

    PDF插入表单或图片 PDF插入表单数据前需要对模板进行处理,使用Adobe Acrobat DC 的准备表单功能添加文本域 表单数据MAP里的KEY必须与PDF添加的域名称一致才能添加进去 impo ...

  4. Java操作pdf文件与Base64编码相互转换与文件流操作

    1.第一步,引入bc包的安装依赖. 在pom.xml中引入. <!-- https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jd ...

  5. Java使用PDFBOX操作pdf文件(一,加载和创建pdf)

    前言: 之前想学习使用Java操作pdf的时候看过了IText的文档.确实IText的文档很全,也有一个官网可以很方便的查找信息.但IText的开源协议为AGPL,使用者必须传染性的开源代码,商业使用 ...

  6. java操作properties文件简单学习

    java操作properties文件的工具类简单封装: 注意:由于本地和环境和linux服务的路径有区别,或者jetty,resin,tomcat部署后,文件的路径也是有区别的.比如我们在linux上 ...

  7. bfo java_Java操作PDF文件(BFO) | 学步园

    上一次我们用iText这个工具在Java环境下操作PDF文件,现在我们换一个工具:BFO iText的确小巧,但是功能也有限制,只能简单的生成PDF文件,BFO却不同,能设置字体.版面等元素. 最新版 ...

  8. 如何用 Java 对 PDF 文件进行电子签章

    转自:如何用 Java 对 PDF 文件进行电子签章 - Ferocious - 博客园 一.概述 二.技术选型 三.生成一个图片签章 四.如何按模板生成PDF文件 五.如何生成PKSC12证书 六. ...

  9. JAVA操作pdf——创建表格

    JAVA操作pdf--创建表格 一.前言 在实习的时候遇到了需要将查询到的数据构建成为PDF的情况,于是在网上查找到了相关的Java操作pdf的教程,看到大部分的文章都是使用ITextPdf操作的,于 ...

最新文章

  1. 实验三 ShellShock 攻击实验
  2. group plot simplest approach in matlab
  3. linux简单使用命令发送邮件
  4. android录音播放列表,android数据库里的视频,图片,音频表
  5. mysql 数据库event_mysql数据库事件调度(Event)
  6. 场景文字识别的算法创新与应用,来自百度的技术前沿
  7. Unity3D基础18:物体查找与控制
  8. php 如何将100w级的数据入库。
  9. ChinaDDoS BGP 流量牵引二层VLAN回注配置
  10. 北大青鸟S1结业项目团队第一名——Myktv前端
  11. ArcGIS Server Flex API接入MapABC地图
  12. suse linux raid驱动,安装SuSE使用嵌入式SATA控制器用常见设备使用情况的megaSR swraid驱动程序...
  13. Java实现 蓝桥杯VIP 算法提高 盾神与砝码称重
  14. html水晶按钮图片,css 如何实现一个水晶按钮的效果呢?
  15. JAVA基础之HttpServletResponse响应
  16. 2.2 DP: Value Iteration Gambler‘s Problem
  17. 基于Spring Boot的农家乐点餐系统
  18. 实验吧WEB CTF 猫抓老鼠 全网最简单易懂的解题方法
  19. MySQL安装--无法初始化
  20. 财富500强排名(2010)

热门文章

  1. Python正规表示式:不一定要会,但会了超省力
  2. 立体匹配经典算法:PatchMatchStereo
  3. 如何给 Ulink2 降级详解
  4. Android 11.0 QuickQSPanel添加亮度进度条布局
  5. 2018-7-3-第八篇编程素养练习
  6. WebSocketSharp 的使用
  7. 人成长中必须知道的20个经典故事
  8. html发布页,发布页入口.html
  9. 入职华为外包一个月,我离职了
  10. Android studio 制作.9图片步骤