Itext5库的对PDF文件的基本操作(一)---新建文档,设置文档属性,设置文档密码
首先引入依赖,为了方便起见,我们采用maven方式构建demo项目。在pom中添加itext库的相应依赖。
<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version></dependency><!-- https://mvnrepository.com/artifact/com.itextpdf/itext-xtra --><dependency><groupId>com.itextpdf</groupId><artifactId>itext-xtra</artifactId><version>5.5.13</version></dependency><!-- 解析HTML 为PDF --><dependency><groupId>com.itextpdf.tool</groupId><artifactId>xmlworker</artifactId><version>5.5.13</version></dependency>
这里由于itext5是完全开源的。而itext7是商用付费的用的AGL协议。所以只用itext5.引入上图所示依赖即可。
一.创建pdf文档并修饰相关基本属性。
代码如下
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfWriter;import java.io.FileNotFoundException;
import java.io.FileOutputStream;/*** @Author: TateBrown* @date: 2018/9/9 20:22* @param:* @return:*/
//创建pdf文档
public class Create{public static final String RESULT="demo1.pdf";public static void main(String[] args) throws FileNotFoundException, DocumentException {Document document=new Document();//获取一个pdfWriter实例PdfWriter.getInstance(document,new FileOutputStream(RESULT));document.open();document.add(new Paragraph("Hello World!"));document.close();
// //设置页面尺寸
// Rectangle pagesize=new Rectangle(216f,720f);
// //设置文档尺寸,后面四个参数为上下左右四边外边距
// Document document1=new Document(pagesize,36f,72f,108f,180f);
// //设置用户尽可能大的尺寸的pdf
// PdfWriter.getInstance(document,new FileOutputStream(RESULT)).setUserunit(75000f);}
}
2.设置pdf文档的相关属性
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfWriter;import java.io.FileNotFoundException;
import java.io.FileOutputStream;/*** @Author: TateBrown* @date: 2018/9/9 20:57* @param:* @return:*/
//设置pdf文件相关属性,比如页面大小,页面背景色,页边空白,Title,Author,Subject,Keywords
public class SetAttribute {public static void main(String[] args) throws FileNotFoundException, DocumentException{String src="demo2.pdf";//页面大小Rectangle rect=new Rectangle(PageSize.A4.rotate());//页面背景色rect.setBackgroundColor(BaseColor.BLUE);Document doc=new Document(rect);FileOutputStream out=new FileOutputStream(src);PdfWriter writer=PdfWriter.getInstance(doc,out);//版本writer.setPdfVersion(PdfWriter.VERSION_1_4);//设置相关属性doc.addTitle("Title");doc.addAuthor("TateBrown");doc.addSubject("subject");doc.addKeywords("Keywords");doc.addCreator("cretor");//设置页边空白间距,类似网页盒模型的margindoc.setMargins(10,10,30,30);doc.open();doc.add(new Paragraph("Hello World!"));doc.close();}
}
3.设置pdf的权限,权限分为两种,使用者权限和创建者权限。两者可以做的事情是不一样的,所以分开。
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;import java.io.FileNotFoundException;
import java.io.FileOutputStream;/*** @Author: TateBrown* @date: 2018/9/9 21:05* @param:* @return:*/
//设置pdf密码
public class SetPassword {public static void main(String[] args) throws FileNotFoundException, DocumentException{Document doc=new Document();FileOutputStream out=new FileOutputStream("demo.pdf");PdfWriter writer=PdfWriter.getInstance(doc,out);writer.setEncryption("123".getBytes(),"123456".getBytes(),PdfWriter.ALLOW_SCREENREADERS,PdfWriter.STANDARD_ENCRYPTION_128);//123为查看的密码,123456是作者使用的密码,可以进行修改doc.open();doc.add(new Paragraph("Hello World"));doc.close();}
}
4.向pdf中添加多种对象。片段,短语等。
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.pdf.PdfWriter;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;/*** @Author: TateBrown* @date: 2018/9/9 21:31* @param:* @return:*/
//插入多种对象
public class AddChunk_Phrase_Paragraph_List {public static void main(String[] args) throws FileNotFoundException, DocumentException,IOException{Document doc=new Document();PdfWriter pdfWriter=PdfWriter.getInstance(doc,new FileOutputStream("demo.pdf"));doc.open();doc.add(new Chunk("Hello"));doc.add(new Chunk("123"));doc.close();}
}
5.添加页码
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;import java.io.FileNotFoundException;
import java.io.FileOutputStream;/*** @Author: TateBrown* @date: 2018/9/9 21:10* @param:* @return:*/
public class AddPage {public static void main(String[] args) throws FileNotFoundException, DocumentException{Document doc=new Document();doc.add(new Paragraph("First page"));doc.newPage();PdfWriter writer=PdfWriter.getInstance(doc, new FileOutputStream("demo.pdf"));writer.setPageEmpty(false);doc.add(new Paragraph("2"));doc.close();}
}
6.添加背景图水印图
/*** @Author: TateBrown* @date: 2018/9/9 21:16* @param:* @return:*/
//添加背景图和水印
public class AddBackGroundPic {public static void main(String[] args) throws FileNotFoundException, DocumentException,IOException{PdfReader reader=new PdfReader("demo.pdf");PdfStamper stamp=new PdfStamper(reader,new FileOutputStream("demo.pdf"));Image img=Image.getInstance("background.jpg");img.setAbsolutePosition(200,400);PdfContentByte cb=stamp.getUnderContent(1);cb.addImage(img);//文字水印图PdfContentByte over=stamp.getOverContent(2);over.beginText();//设置字体BaseFont bf=BaseFont.createFont(BaseFont.HELVETICA,BaseFont.WINANSI, BaseFont.EMBEDDED);over.setFontAndSize(bf,18);over.setTextMatrix(30,30);over.showTextAligned(Element.ALIGN_LEFT,"水印",230,430,45);over.endText();//背景图片Image img2 = Image.getInstance("background.jpg");img2.setAbsolutePosition(0, 0);PdfContentByte under2 = stamp.getUnderContent(3);under2.addImage(img2);stamp.close();reader.close();}
}
未完待续- -
Itext5库的对PDF文件的基本操作(一)---新建文档,设置文档属性,设置文档密码相关推荐
- iText5实现Java生成PDF文件完整版,二维码
iText5实现Java生成PDF文件完整版 vue 项目中分别使用 vue-pdf 插件和内嵌 iframe 实现 PDF 文件预览,缩放,旋转,下载,保存等功能 ? Vue打印文件(v-print ...
- 利用requests库批量下载PDF文件
文章目录 1. 前言 2. 批量下载大法好 2.1 挖掘思路 2.2 核心知识点 2.3 汇总代码 1. 前言 学弟最近在复习(预习)微积分,但是苦于没有较好的资料学习,所以向我发出求助.我向他推 ...
- Python自动化办公【PDF文件自动化】
PDF 文件可以分为可编辑型PDF 文件与扫描型PDF 文件,内容可以复制,是可编辑型PDF文件,反之则是扫描型PDF 文件.简单理解扫描型PDF文件是由一张张图像构建而成. 读取PDF文件内容 1. ...
- 怎么在第一个PDF文件的中间,插入第二个PDF文件的内容?
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 昨夜裙带解,今朝蟢子飞. 大家好, ...
- 怎么在第一个 PDF 文件的中间,插入第二个 PDF 文件的内容?
这是「进击的Coder」的第 568 篇技术分享 作者:Python 进阶者 来源:Python 爬虫与数据挖掘 " 阅读本文大概需要 3 分钟. " 前言 前几天在学习[麦叔]P ...
- 第19天---python办公自动化---操作PDF文件
第19天-python办公自动化-操作PDF文件 在Python中,可以使用名为PyPDF2的三方库来读取PDF文件,可以使用下面的命令来安装它. pip install PyPDF2 读取PDF并抽 ...
- java 实现在线编辑本地pdf文件内容
功能描述:将pdf文件上传到服务器,然后服务器读取上传的pdf文件内容,然后渲染到在线富文本中,再然后在富文本中修改完毕点击保存,再将上传的pdf文件内容修改为在线富文本中的内容 1.实现将PDF文件 ...
- python读取PDF文件中跨页表格思路分享
目录 背景 背景知识 实现思路 1.判断当前页面是否以表格结尾 2.判断下一页面是否以表格开头 3.注意事项 参考 背景 最近需要读取PDF文件中的表格,遇到的一个难点之一是如何识别并合并PDF中跨页 ...
- swftools工具将pdf文件转换为swf文件
开发客户网站时遇到了一个需求,客户要求后台上传pdf文件,前台能以翻书的形式直接访问. 首先想到的是使用js解决,用户访问前端页面时,php将文件路径发送给js,让js呈现出来翻书的效果.在网上百度了 ...
最新文章
- Kafka万亿级消息实战
- 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
- java 调用父类的变量_java创建子类对象设置并调用父类的变量操作
- GDCM:读取gdcm::Curve的测试程序
- 13 个 Python 新手练级项目
- 全国汽车牌照号详解细表(各省市区)
- 22行代码AC_试题 历届试题 油漆面积【解题报告】
- #UnityTips# 2017.11.14
- C语言试题十七之用来求数组的最大元素在数组中的下标并存放在k所指的储存单元中
- [JavaWeb-Bootstrap]CSS样式和JS插件
- 834 树中距离之和
- TypeScript,初次见面,请多指教 ?
- NLPCC 2021 Final Call For Papers
- 滴滴估值630亿美元开启新一轮融资,2021年前上市;索信达新三板退市后二次“流血”冲击香港IPO;蜻蜓FM COO肖轶离职...
- 【一日一logo|day_8】坦格利安家族?修改什么的不存在的
- naxtTick获取服务器数据
- 推荐10款效率可以翻倍的IDEA插件,撸码利器
- 【ceph】ceph-mds journal模块解读
- 测试分析报告(GB8567——88)基于协同的在线表格forture-sheet
- 花了4000多的钱,领导让我去开8000多元的发票,我该怎么办??
热门文章
- Mysql实现幂等_过幂等性问题
- Java基础篇 | Java开发环境的搭建
- Oracle 发力 MySQL,MariaDB 成功上市,大规模融资锐减 | 解读数据库的 2022
- Dubbo服务测试方法
- Matlab 生成 Python 包并构建 Python 应用程序
- 华为手机电量不耐用?记得调整这4个设置,多用几个小时都没问题
- 我为什么想转型管理?——开发者的觉悟
- 拓扑排序——家谱树(裸题)
- a new framework
- 如何设置ios不显示 android显示图片,IOS14有没有实时显示功能?息屏显示怎么设置[多图]...