当前位置: 首页 > news >正文

itext5生成pdf demo应用

引入依赖

    <dependencies><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.24</version> <!-- 或者使用最新的版本 --></dependency><dependency><groupId>org.apache.pdfbox</groupId><artifactId>fontbox</artifactId><version>2.0.24</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version></dependency><dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>3.2.2</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.18</version><scope>provided</scope></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.0.0</version></dependency><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version> <!-- 检查最新版本 --></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpmime</artifactId><version>4.5.13</version> <!-- 检查最新版本 --></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.6</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>LATEST</version></dependency></dependencies>
</project>

生成多页pdf不同大小的页面

import java.io.FileOutputStream;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;import javax.imageio.ImageIO;public class test01 {public static void main(String[] args) throws Exception {Document document = new Document();String fileName = "./pageSize.pdf";Document doc = new Document(PageSize.A4);PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(fileName));doc.open();PdfContentByte pdfContentByte = writer.getDirectContent();pdfContentByte.getPdfDocument().setPageSize(PageSize.A3);doc.newPage();doc.add(new Paragraph("Hello A3"));pdfContentByte.getPdfDocument().setPageSize(PageSize.A2);doc.newPage();doc.add(new Paragraph("Hello A2"));doc.close();}
}

页面添加图片

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfWriter;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;public class test03 {public static void main(String[] args) throws Exception {try {Image image = Image.getInstance("./files/files-pdf/images_0.png");// 获取图片的原始宽度和高度float originalWidth = image.getWidth();float originalHeight = image.getHeight();Document document = new Document(new Rectangle(originalWidth, originalHeight), 0, 0, 0, 0);PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream("./hello2.pdf"));document.open();// 获取PDF页面的宽度和高度Rectangle pageSize = document.getPageSize();float pageWidth = pageSize.getWidth();// 根据页面宽度计算图片的缩放比例float scaleRatio = pageWidth / originalWidth;// 根据缩放比例计算图片的新宽度和高度float newWidth = originalWidth * scaleRatio;float newHeight = originalHeight * scaleRatio;// 设置图片的新宽度和高度,并保持纵横比不变image.scaleToFit(newWidth, newHeight);image.setAlignment(Element.ALIGN_CENTER);document.add(image);// 获取当前页面的直接内容PdfContentByte canvas = pdfWriter.getDirectContent();// 计算文字位置,这里以图片下方10pt为例float textX = 500; // 根据需要调整X坐标float textY = 800;// 设置字体和大小canvas.beginText();canvas.setFontAndSize(BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED), 12);// 设置文字位置并添加文字canvas.setTextMatrix(1, 0, 0, 1, textX, textY);canvas.showText("Your Text Here");canvas.endText();canvas.beginText();canvas.setFontAndSize(BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED), 18);// 设置文字位置并添加文字canvas.setTextMatrix(1, 0, 0, 1, textX+200, textY+200);canvas.showText("Your Text Here12121212121");canvas.endText();document.close();} catch (DocumentException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
}

或者

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;
import com.itextpdf.text.pdf.draw.DrawInterface;public class test02 {public static void main(String[] args) throws Exception {try {Image image = Image.getInstance("./files/files-pdf/images_0.png");// 获取图片的原始宽度和高度float originalWidth = image.getWidth();float originalHeight = image.getHeight();Document document = new Document(new Rectangle(originalWidth, originalHeight), 0, 0, 0, 0);PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream("./hello2.pdf"));document.open();// 获取PDF页面的宽度和高度Rectangle pageSize = document.getPageSize();float pageWidth = pageSize.getWidth();// 根据页面宽度计算图片的缩放比例float scaleRatio = pageWidth / originalWidth;// 根据缩放比例计算图片的新宽度和高度float newWidth = originalWidth * scaleRatio;float newHeight = originalHeight * scaleRatio;// 设置图片的新宽度和高度,并保持纵横比不变image.scaleToFit(newWidth, newHeight);image.setAlignment(Element.ALIGN_CENTER);document.add(image);// 获取当前页面的直接内容PdfContentByte canvas = pdfWriter.getDirectContent();// 计算文字位置,这里以图片下方10pt为例float textX = 500; // 根据需要调整X坐标float textY = 800;// 设置字体和大小canvas.beginText();canvas.setFontAndSize(BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED), 12);// 设置文字位置并添加文字canvas.setTextMatrix(1, 0, 0, 1, textX, textY);canvas.showText("Your Text Here");canvas.endText();canvas.beginText();canvas.setFontAndSize(BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED), 18);// 设置文字位置并添加文字canvas.setTextMatrix(1, 0, 0, 1, textX+200, textY+200);canvas.showText("Your Text Here12121212121");canvas.endText();document.close();} catch (DocumentException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
}

相关文章:

  • 清空了电脑回收站,之前的文件还能否恢复?
  • 番外篇 | YOLOv5更换主干网络之Conformer:首个CNN + Transformer的backbone模型
  • 15:00面试,15:08出来,面试问的有点变态。。。。
  • 04. Redis 配置文件
  • 计算电磁学:FDFD算法总结
  • sklearn监督学习--k近邻算法
  • 什么是安全左移如何实现安全左移
  • 工地升降机AI人数识别系统
  • 键盘盲打是练出来的
  • Steam致富:玩免费游戏Banana获得可交易道具
  • 15:00面试,15:08就出来了,问的问题有点变态。。。
  • 数据仓库实验四:聚类分析实验
  • springboot项目中图片上传之后需要重启工程才能看到图片?
  • 给大家分享一套非常棒的python机器学习课程
  • Docker快速搭建Oracle服务
  • Angular4 模板式表单用法以及验证
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • exif信息对照
  • Java到底能干嘛?
  • NSTimer学习笔记
  • React的组件模式
  • spring + angular 实现导出excel
  • springMvc学习笔记(2)
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 简单实现一个textarea自适应高度
  • 讲清楚之javascript作用域
  • 判断客户端类型,Android,iOS,PC
  • 浅谈Golang中select的用法
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 手机端车牌号码键盘的vue组件
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #pragma once
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (三)终结任务
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (四)模仿学习-完成后台管理页面查询
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (转)jdk与jre的区别
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • ***通过什么方式***网吧
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET8 动态添加定时任务(CRON Expression, Whatever)
  • .NET的微型Web框架 Nancy
  • @PostConstruct 注解的方法用于资源的初始化
  • @SuppressWarnings(unchecked)代码的作用
  • [2016.7 test.5] T1