效果图:

添加依赖:

     <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.9</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version></dependency>
import com.itextpdf.text.*;
import com.itextpdf.text.Font;
import com.itextpdf.text.pdf.*;import java.io.File;
import java.io.FileOutputStream;public class PDFDemo {public static void main(String[] args) throws Exception {String filePath = "E:\\work\\idea\\project\\pdf\\src\\main\\resources\\" + System.currentTimeMillis() + ".pdf";String title = "国务院国庆放假通知";String swDate = "2020-8-11";String no = "2037";String lwjg = "国务院";String wh = "";String fileTitle = "          关于国庆放假的通知";String tldps = "";String nbyj = "          经国务院批准,现将2020年国庆节和中秋节放假调休日期的具体安排通知如下"+ "\n        10月1日至8日放假调休,共8天。9月27日(星期日)、10月10日(星期六)上班。。";generatePDF(filePath, title, swDate, no, lwjg, wh, fileTitle, tldps, nbyj);}public static String generatePDF(String filePath, String title, String swDate, String no, String lwjg, String wh, String fileTitle, String tldps, String nbyj) throws Exception {Document document = new Document();PdfWriter.getInstance(document, new FileOutputStream(filePath));document.open();document.newPage();//标题BaseFont baseFont = BaseFont.createFont("C:/Windows/Fonts/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);Font font = new Font(baseFont, 20, Font.BOLD, new BaseColor(199, 95, 68));Phrase phrase = new Phrase(50, title, font);Paragraph paragraph = new Paragraph(phrase);paragraph.setAlignment(Element.ALIGN_CENTER);document.add(paragraph);//BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
//        bfChinese = BaseFont.createFont("E:\\work\\idea\\project\\pdf\\src\\main\\resources\\方正仿宋_GBK.TTF", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);font = new Font(bfChinese, 14, Font.NORMAL);font.setColor(BaseColor.BLACK);PdfPTable t1 = new PdfPTable(2);// 设置表格宽度比例为%100t1.setWidthPercentage(88);// 设置表格的宽度t1.setTotalWidth(500);// 也可以每列分别设置宽度t1.setTotalWidth(new float[]{220, 220});// 锁住宽度t1.setLockedWidth(true);// 设置表格上面空白宽度t1.setSpacingBefore(15f);PdfPCell cA = new PdfPCell(new Paragraph("收文时间:" + swDate, font));cA.setBorder(0);t1.addCell(cA);PdfPCell cB = new PdfPCell(new Paragraph("第" + no + "号", font));cB.setBorder(0);cB.setHorizontalAlignment(Element.ALIGN_RIGHT);t1.addCell(cB);document.add(t1);//表格PdfPTable table = new PdfPTable(4);// 设置表格宽度比例为%100table.setWidthPercentage(100);// 设置表格的宽度table.setTotalWidth(500);// 也可以每列分别设置宽度table.setTotalWidth(new float[]{45, 200, 40, 200});// 锁住宽度table.setLockedWidth(true);// 设置表格上面空白宽度table.setSpacingBefore(10f);// 构建每个单元格PdfPCell cell11 = new PdfPCell(new Paragraph("来文机关", font));cell11.disableBorderSide(10);cell11.setLeading(1.1F, 1.1f);cell11.setPaddingBottom(8);cell11.setVerticalAlignment(Element.ALIGN_MIDDLE);cell11.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell11);PdfPCell cell12 = new PdfPCell(new Paragraph(lwjg, font));cell12.disableBorderSide(10);cell12.setVerticalAlignment(Element.ALIGN_MIDDLE);cell12.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell12);PdfPCell cell13 = new PdfPCell(new Paragraph("文号", font));cell13.disableBorderSide(10);cell13.setVerticalAlignment(Element.ALIGN_MIDDLE);cell13.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell13);PdfPCell cell14 = new PdfPCell(new Paragraph(wh, font));cell14.disableBorderSide(2);table.addCell(cell14);PdfPCell cell21 = new PdfPCell(new Paragraph("文件标题", font));cell21.setLeading(1.1F, 1.1f);cell21.disableBorderSide(10);cell21.setPaddingBottom(8);cell21.setVerticalAlignment(Element.ALIGN_MIDDLE);cell21.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell21);Paragraph fileTitleP = new Paragraph(fileTitle, font);fileTitleP.setFirstLineIndent(12);PdfPCell cell22 = new PdfPCell(fileTitleP);cell22.setLeading(1.1F, 1.1f);cell22.setPaddingBottom(8);cell22.disableBorderSide(2);// 设置占用列数cell22.setColspan(3);cell22.setVerticalAlignment(Element.ALIGN_MIDDLE);table.addCell(cell22);Paragraph p = new Paragraph("厅     领     导     批     示   ", font);PdfPCell cell31 = new PdfPCell(p);int lines = getLineNum(nbyj, 32);if (lines <= 4) {cell31.setFixedHeight(450);} else {cell31.setFixedHeight( 450- (lines-4)*22);}cell31.disableBorderSide(10);cell31.setLeading(1.2F, 1.2f);cell31.setVerticalAlignment(Element.ALIGN_MIDDLE);cell31.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell31);PdfPCell cell32 = new PdfPCell(new Paragraph(tldps, font));cell32.setColspan(3);cell32.disableBorderSide(2);table.addCell(cell32);PdfPCell cell41 = new PdfPCell(new Paragraph("拟     办     意     见   ", font));cell41.setLeading(1.2F, 1.2f);cell41.disableBorderSide(8);cell41.setPaddingBottom(10f);
//        cell41.setFixedHeight(80);cell41.setVerticalAlignment(Element.ALIGN_MIDDLE);cell41.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell41);PdfPCell cell42 = new PdfPCell(new Paragraph(nbyj, font));cell42.setColspan(3);cell42.setLeading(1.4F, 1.4f);cell42.setPaddingBottom(10);table.addCell(cell42);document.add(table);//底部PdfPTable t3 = new PdfPTable(3);// 设置表格默认为无边框t3.getDefaultCell().setBorder(0);// 设置表格上面空白宽度t3.setSpacingBefore(2f);// 设置表格宽度比例为%100t3.setWidthPercentage(88);// 设置表格的宽度t3.setTotalWidth(500);// 也可以每列分别设置宽度t3.setTotalWidth(new float[]{80, 120, 200});PdfPCell c1 = new PdfPCell(new Paragraph("审核:", font));c1.setBorder(0);t3.addCell(c1);PdfPCell c2 = new PdfPCell(new Paragraph("承办:", font));c2.setVerticalAlignment(Element.ALIGN_MIDDLE);c2.setBorder(0);c2.setHorizontalAlignment(Element.ALIGN_CENTER);t3.addCell(c2);PdfPCell c3 = new PdfPCell(new Paragraph("联系电话:", font));c3.setVerticalAlignment(Element.ALIGN_MIDDLE);c3.setHorizontalAlignment(Element.ALIGN_CENTER);c3.setBorder(0);t3.addCell(c3);document.add(t3);document.close();//图片水印PdfReader reader = new PdfReader(filePath);String result = "E:\\work\\idea\\project\\pdf\\src\\main\\resources\\r_" + System.currentTimeMillis() + ".pdf";PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(result));Image img = Image.getInstance("E:\\work\\idea\\project\\pdf\\src\\main\\resources\\jijian.png");img.setAbsolutePosition(500, 780);img.scaleToFit(600, 44);//大小PdfContentByte under = stamp.getUnderContent(1);under.addImage(img);stamp.close();reader.close();File file = new File(filePath);if (file.exists()) {file.delete();}return result;}public static int getLineNum(String text, double lineWord) {String[] split = text.split("\n");int num = 0;System.out.println(text.length());for (int i = 0; i < split.length; i++) {String s = split[i];num += Math.ceil(s.length() / lineWord);}System.out.println(num);return num;}
}```### 删除PDF指定页```java
public static void removePageFromPDF(String path, String tempPath, int page) throws InterruptedException, Exception {PdfReader reader = new PdfReader(path);File tmpNewFile = new File(tempPath);FileOutputStream fos = new FileOutputStream(tmpNewFile);com.itextpdf.text.Document d = new com.itextpdf.text.Document();PdfCopy copy = new PdfCopy(d, fos);d.open();for (int i = 1; i <= reader.getNumberOfPages(); ++i) {if (i != page) {copy.addPage(copy.getImportedPage(reader, i));}}copy.freeReader(reader);reader.close();d.close();fos.close();}

PDF合并

public static void mergePdfFiles(String[] files, String savepath) {try {PdfReader pdfReader = new PdfReader(files[0]);Rectangle pageSize = pdfReader.getPageSize(1);Document document = new Document(pageSize);PdfCopy copy = new PdfCopy(document, new FileOutputStream(savepath));document.open();for (int i = 0; i < files.length; i++) {PdfReader reader = new PdfReader(files[i]);int n = reader.getNumberOfPages();for (int j = 1; j <= n; j++) {document.newPage();PdfImportedPage page = copy.getImportedPage(reader, j);copy.addPage(page);}reader.close();}pdfReader.close();copy.close();document.close();for (String file : files) {deleteFile(file);}} catch (IOException e) {e.printStackTrace();} catch (DocumentException e) {e.printStackTrace();}}

IText生成PDF删除与合并相关推荐

  1. 利用velocity模板以及itext生成pdf

    利用velocity模板以及itext生成pdf 我整理的源码:http://download.csdn.net/download/u012174571/8748897 首先是velocity的使用: ...

  2. Java使用itext生成Pdf

    Java使用itext生成Pdf 背景 所需依赖 解决jpedal-lgpl jar包问题 示例代码 生成带图片的PDF(使用本地文件系统图片) 生成带图片的PDF(使用网络图片) 背景 在某些业务场 ...

  3. java 生成pdf itext_使用Java组件itext 生成pdf介绍

    iText是一个能够快速产生PDF文件的Java类库.iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的.它的类库尤其与java Servlet有很好的给合.使用iText与 ...

  4. java itext 设计器_使用Java组件itext 生成pdf的介绍

    [IT168 技术]iText是一个能够快速产生PDF文件的java类库.iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的.它的类库尤其与java Servlet有很好的给 ...

  5. java生成pdf加密_java使用iText 生成PDF全攻略(表格,加密)

    java使用iText 生成PDF全攻略,包括创建文档,设置字体,添加表格(PdfPTable),创建新页(newPage),设置布局,加密 主要使用的jar包: itextpdf-5.4.2.jar ...

  6. itext生成pdf间距_使用itext生成pdf

    在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过 在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或下载得到 ...

  7. itext 生成pdf 输出特殊符号_JAVA提取PDF内容及转换PDF为图片

    今天给大家分享一下使用java处理pdf文件,包括提取pdf文本.提取pdf图片.pdf转图片三种操作. 主要使用到的库是apache开源的pdfbox,目前最新版本是2.0.x,网上的资料一般是1. ...

  8. java itext 横线,Java itext生成pdf设置下划线,,package cn.o

    Java itext生成pdf设置下划线,,package cn.opackage cn.outofmemory.example.itextpdf;import com.itextpdf.text.C ...

  9. iText生成pdf中文字体

    用iText生成pdf时,内容有中文的时候用到中文字体. 直接使用iTextAsian.jar中的字体 BaseFont base = BaseFont.createFont("STSong ...

最新文章

  1. 对于装饰器Decorator的理解
  2. UBUNTU安装搜狗
  3. 查询Sqlserver数据库死锁的一个存储过程
  4. 使用Docker镜像和仓库
  5. NOIP201501金币
  6. layui 鼠标移入变为小手_如何在 LayUI 数据表格的列元素上,鼠标悬浮,显示所有文字内容(修改源码)...
  7. 夜晚较为活跃之物种对照图
  8. 动物称重管理系统HDX|FDX-B格式低频动物电子耳标面板式远距离读写器|识读器HX-L81100出线方式与标签识读距离
  9. 经典单片机课程设计题目大全【大学教授珍藏资料】
  10. 最新版UI视频解析单页源码附带超清接口
  11. 中秋之际献上【中秋快乐】藏头诗
  12. mongodb意外断电,非正常关闭, 造成不可启动, 日志出现WT_ERROR: non-specific WiredTiger error, terminating
  13. input file选择图片后显示(FileReader)
  14. 什么是软路由,软路由和普通路由器有何区别
  15. 边缘计算(Edge computing) 简单介绍
  16. 超强的苹果官网滚动文字特效实现
  17. Excel表格vlookup函数
  18. CentOS 7无法启动,在进度条卡死问题解决
  19. Centos7 安装RVM
  20. 会声会影2022最新版更新 8项全新功能介绍

热门文章

  1. vue样式 引入图片_Vue引入图片的几种方式
  2. 为什么函数y=f(x)的导数dy/dx可以适用分数运算呢?
  3. 基于matlab/simulink的双电机速度跟踪伺服系统仿真,基于Matlab_Simulink的伺服系统仿真...
  4. iOS10.1.1越狱插件推荐——DarkAppleStore
  5. 解决谷歌浏览器扩展程序中安装vue-devtools插件遇到的问题
  6. Java程序员能不了解Oracle吗?
  7. linux cd联想,智能工具:Lenovo硬件诊断工具(Linux版本)
  8. 百度一键root android,百度一键root下载
  9. jQuery流程图制作插件
  10. 在linux上剪视频,在Linux系统上安装和使用Video Trimmer快速修剪视频