PDF转图片-itextpdf-java源码
提供PDF 文件转图片的工具类。
电子签章过程中存在着在网页上对签署文件进行预览、指定签署位置、文件签署等操作,由
于图片在浏览器上的兼容性和友好性优于PDF 文件,所以一般在网页上进行电子签章时,会先
将PDF 文件转换成图片,展示给用户。用户在页面上确定好签署位置,并进行签署时,后端服
务会通过对电子印章/手写签名位置、大小以及PDF 文件的大小进行计算,在PDF 文件的准确位
置上完成文件签署。
import com.resrun.service.pojo.ConvertImage;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.springframework.stereotype.Service;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.List;
/**
* @Description: pdf文件转图片业务
* @Package: com.resrun.service.image
* @ClassName: Pdf2ImageService
* @copyright 北京资源律动科技有限公司
*/
@Service
public class PdfConvertImageService {
private Float resolution = 90f ;
/**图片格式为jpg类型**/
public static final String IMG_JPE = "jpg";
/**图片格式为png类型**/
public static final String IMG_PNG = "png";
public List<ConvertImage> convertImage(byte[] signFileByte){
if(signFileByte == null){
return null ;
}
List<ConvertImage> responseList = new ArrayList<>();
PDDocument doc = null;
try {
//加载pdf文件
doc = PDDocument.load(signFileByte);
PDFRenderer renderer = new PDFRenderer(doc);
int pageCount = doc.getNumberOfPages();
if(pageCount == 0){
return responseList;
}
for (int i = 0; i < pageCount; ++i) {
int page = i ;
BufferedImage image = renderer.renderImageWithDPI(page, resolution);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ImageIO.write(image, IMG_PNG, stream);
byte[] bytes = stream.toByteArray();
if(bytes != null){
ConvertImage response = new ConvertImage();
response.setImageByte(bytes);
response.setPage(page);
responseList.add(response);
}
}
}catch (Exception e) {
e.printStackTrace();
}
return responseList ;
}
}
PDF转图片-itextpdf-java源码的更多相关文章
- 压缩图片大小(Java源码)
/** * * 直接指定压缩后的宽高: * @param oldFile * 要进行压缩的文件 * @param width * 压缩后的宽度 * @param height * 压缩后的高度 * @ ...
- Tika结合Tesseract-OCR 实现光学汉字识别(简体、宋体的识别率百分之百)—附Java源码、测试数据和训练集下载地址
OCR(Optical character recognition) —— 光学字符识别,是图像处理的一个重要分支,中文的识别具有一定挑战性,特别是手写体和草书的识别,是重要和热门的科学研究方向.可 ...
- 分享知识-快乐自己:FastDFS 上传 java 源码
FastDFS 上传 java 源码:点我下载源码 首先导入 POM 文件:解决 maven 不能下载 fastdfs-client-java JAR <dependency> <g ...
- 如何阅读Java源码 阅读java的真实体会
刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心. 说到技术基础,我打个比 ...
- Android反编译(一)之反编译JAVA源码
Android反编译(一) 之反编译JAVA源码 [目录] 1.工具 2.反编译步骤 3.实例 4.装X技巧 1.工具 1).dex反编译JAR工具 dex2jar http://code.go ...
- 如何阅读Java源码
刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动.源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心. 说到技术基础,我打个比方吧, ...
- Java 源码学习线路————_先JDK工具包集合_再core包,也就是String、StringBuffer等_Java IO类库
http://www.iteye.com/topic/1113732 原则网址 Java源码初接触 如果你进行过一年左右的开发,喜欢用eclipse的debug功能.好了,你现在就有阅读源码的技术基础 ...
- Programming a Spider in Java 源码帖
Programming a Spider in Java 源码帖 Listing 1: Finding the bad links (CheckLinks.java) import java.awt. ...
- 解密随机数生成器(二)——从java源码看线性同余算法
Random Java中的Random类生成的是伪随机数,使用的是48-bit的种子,然后调用一个linear congruential formula线性同余方程(Donald Knuth的编程艺术 ...
- Java--Eclipse关联Java源码
打开Eclipse,Window->Preferences->Java 点Edit按钮后弹出: 点Source Attachment后弹出: 选择Java安装路径下的src.zip文件即可 ...
随机推荐
- Net 高级调试之八:代码审查及杂项命令
一.简介 今天是<Net 高级调试>的第八篇文章.这篇文章设计的内容挺多的,比如:如何查看方法的汇编代码,如何获取方法的描述符,对象同步块的转储,对象方法表的转储,托管堆和垃圾回收器信息的 ...
- mysq数据库查询之分组查询
一.什么是分组查询分组查询:将查询结果按照指定字段进行分组二.分组查询的基本语法select 查询字段 from 表名 [where 条件] group by 分组字段名 [having 条件表达式] ...
- C++跨DLL内存所有权问题探幽(二)CRT中MT和MD混用导致的堆损坏
0xC0000374: 堆已损坏. (参数: 0x00007FFA1E9787F0). _Mem 是 nullptr 我在开发的过程中有遇到上面两个东西的bug,百思不得其解,最后才发现这个和两个DL ...
- 给大家介绍一款强大的抓包代理工具--mitmproxy
最近工作中涉及到和app相关的测试工作,需要用到mock,特意网上查了些资料,发现有很多工具可以实现app的mock,但是经过我反复试用后,发现mitmproxy这个工具非常的强大 我认为mitmpr ...
- Flask 使用Jinja2模板引擎
Jinja2,由Flask框架的创作者开发,是一款功能丰富的模板引擎,以其完整的Unicode支持.灵活性.高效性和安全性而备受推崇.最初受Django模板引擎启发,Jinja2为Flask提供了强大 ...
- python01-基础概念与环境搭建
学习目标 了解硬件 & 操作系统 & 软件(应用系统)之间的关系. 了解常见的操作系统都有哪些. 了解编译器和解释器的区别和作用. 了解编程语言进行分类 了解Python解释器的种类 ...
- SpringBoot-Validate优雅的实现参数校验,详细示例~
1.是什么? 它简化了 Java Bean Validation 的集成.Java Bean Validation 通过 JSR 380,也称为 Bean Validation 2.0,是一种标准化的 ...
- gsamplerCubeArrayShadow isn't supported in textureGrad, textureLod or texture with bias
问题描述 跑rust的Bevy示例程序 运行3d的示例,cargo run --example 3d_shapes 发现报错: INFO bevy_render::renderer: AdapterI ...
- certbot申请泛域名证书并自动续签保姆级教程
certbot申请泛域名证书并自动续签(使用docker进行部署) 一.涉及到的资源及文档 1.云解析 - OpenAPI 概览:https://next.api.aliyun.com/documen ...
- 21、Scaffold属性 FloatingActionButton实现类似闲鱼App底 部导航凸起按钮
FloatingActionButton详解 FloatingActionButton简称FAB ,可以实现浮动按钮,也可以实现类似闲鱼app的底部凸起导航 实现类似闲鱼App底部导航凸起按钮 c ...