首先引入依赖,为了方便起见,我们采用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文件的基本操作(一)---新建文档,设置文档属性,设置文档密码相关推荐

  1. iText5实现Java生成PDF文件完整版,二维码

    iText5实现Java生成PDF文件完整版 vue 项目中分别使用 vue-pdf 插件和内嵌 iframe 实现 PDF 文件预览,缩放,旋转,下载,保存等功能 ? Vue打印文件(v-print ...

  2. 利用requests库批量下载PDF文件

    文章目录 1. 前言 2. 批量下载大法好 2.1 挖掘思路 2.2 核心知识点 2.3 汇总代码 1. 前言   学弟最近在复习(预习)微积分,但是苦于没有较好的资料学习,所以向我发出求助.我向他推 ...

  3. Python自动化办公【PDF文件自动化】

    PDF 文件可以分为可编辑型PDF 文件与扫描型PDF 文件,内容可以复制,是可编辑型PDF文件,反之则是扫描型PDF 文件.简单理解扫描型PDF文件是由一张张图像构建而成. 读取PDF文件内容 1. ...

  4. 怎么在第一个PDF文件的中间,插入第二个PDF文件的内容?

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 昨夜裙带解,今朝蟢子飞. 大家好, ...

  5. 怎么在第一个 PDF 文件的中间,插入第二个 PDF 文件的内容?

    这是「进击的Coder」的第 568 篇技术分享 作者:Python 进阶者 来源:Python 爬虫与数据挖掘 " 阅读本文大概需要 3 分钟. " 前言 前几天在学习[麦叔]P ...

  6. 第19天---python办公自动化---操作PDF文件

    第19天-python办公自动化-操作PDF文件 在Python中,可以使用名为PyPDF2的三方库来读取PDF文件,可以使用下面的命令来安装它. pip install PyPDF2 读取PDF并抽 ...

  7. java 实现在线编辑本地pdf文件内容

    功能描述:将pdf文件上传到服务器,然后服务器读取上传的pdf文件内容,然后渲染到在线富文本中,再然后在富文本中修改完毕点击保存,再将上传的pdf文件内容修改为在线富文本中的内容 1.实现将PDF文件 ...

  8. python读取PDF文件中跨页表格思路分享

    目录 背景 背景知识 实现思路 1.判断当前页面是否以表格结尾 2.判断下一页面是否以表格开头 3.注意事项 参考 背景 最近需要读取PDF文件中的表格,遇到的一个难点之一是如何识别并合并PDF中跨页 ...

  9. swftools工具将pdf文件转换为swf文件

    开发客户网站时遇到了一个需求,客户要求后台上传pdf文件,前台能以翻书的形式直接访问. 首先想到的是使用js解决,用户访问前端页面时,php将文件路径发送给js,让js呈现出来翻书的效果.在网上百度了 ...

最新文章

  1. Kafka万亿级消息实战
  2. 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  3. java 调用父类的变量_java创建子类对象设置并调用父类的变量操作
  4. GDCM:读取gdcm::Curve的测试程序
  5. 13 个 Python 新手练级项目
  6. 全国汽车牌照号详解细表(各省市区)
  7. 22行代码AC_试题 历届试题 油漆面积【解题报告】
  8. #UnityTips# 2017.11.14
  9. C语言试题十七之用来求数组的最大元素在数组中的下标并存放在k所指的储存单元中
  10. [JavaWeb-Bootstrap]CSS样式和JS插件
  11. 834 树中距离之和
  12. TypeScript,初次见面,请多指教 ?
  13. NLPCC 2021 Final Call For Papers
  14. 滴滴估值630亿美元开启新一轮融资,2021年前上市;索信达新三板退市后二次“流血”冲击香港IPO;蜻蜓FM COO肖轶离职...
  15. 【一日一logo|day_8】坦格利安家族?修改什么的不存在的
  16. naxtTick获取服务器数据
  17. 推荐10款效率可以翻倍的IDEA插件,撸码利器
  18. 【ceph】ceph-mds journal模块解读
  19. 测试分析报告(GB8567——88)基于协同的在线表格forture-sheet
  20. 花了4000多的钱,领导让我去开8000多元的发票,我该怎么办??

热门文章

  1. Mysql实现幂等_过幂等性问题
  2. Java基础篇 | Java开发环境的搭建
  3. Oracle 发力 MySQL,MariaDB 成功上市,大规模融资锐减 | 解读数据库的 2022
  4. Dubbo服务测试方法
  5. Matlab 生成 Python 包并构建 Python 应用程序
  6. 华为手机电量不耐用?记得调整这4个设置,多用几个小时都没问题
  7. 我为什么想转型管理?——开发者的觉悟
  8. 拓扑排序——家谱树(裸题)
  9. a new framework
  10. 如何设置ios不显示 android显示图片,IOS14有没有实时显示功能?息屏显示怎么设置[多图]...