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文件即可 ...
随机推荐
- 简单地聊一聊Spring Boot的构架
本文由葡萄城技术团队发布.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 本文小编将详细解析Spring Boot框架,并通过代码举例说明每个层的作用 ...
- 2021 ICPC济南 J Determinant
题意就是给定一个矩阵,然后给出他的行列式的绝对值,这个值是精确的,然后让我们判断行列式的正负. 思路来源:一个Acmer 首先做这个题要明白一个性质才可以做,一个数和它的相反数对一个奇数的取模一定不同 ...
- Codeforces Round #538 (Div. 2) F. Please, another Queries on Array?
原题链接 F. Please, another Queries on Array? 这道题让求\(\phi(\prod\limits_{i = l}^r a_i)\),然后我们化简一下. 设\(P\) ...
- Android Sutdio 编入System API 等隐藏API 方法
1. 将 classes.jar 放入 app/libs 文件夹下 右键点击 jar 包,点击 Add as Library 2. 项目级 Gradle 文件新增以下配置 gradle.project ...
- 期望最大化(EM)算法:从理论到实战全解析
本文深入探讨了期望最大化(EM)算法的原理.数学基础和应用.通过详尽的定义和具体例子,文章阐释了EM算法在高斯混合模型(GMM)中的应用,并通过Python和PyTorch代码实现进行了实战演示. 关 ...
- CSS+HTML初学跟踪项目记录笔记【防丢失】(文章发布系统)二【鸽了】
贴上源代码 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnc ...
- Snipaste安装与使用教程
一.下载 1.官网 下载地址 2.下载 可以直接在官网下载,也可以跳转微软仓库下载增强版的.如果是其他系统,mac在最下面,而Linux现在没有需要等待. 二.开始安装 1.下载完毕,是一压缩包绿色版 ...
- [CF1849F] XOR Partition
XOR Partition 题目描述 For a set of integers $ S $ , let's define its cost as the minimum value of $ x \ ...
- Spring中Bean的加载方式~
1.方式一:基于spring.xml方式配置Bean user import lombok.Data; /** * @author : ly */ @Data public class User { ...
- 【UniApp】-uni-app-项目计算功能(苹果计算器)
前言 本文主要介绍苹果计算器项目中计算功能的实现 在前面的文章中已经实现了输入,动态计算字体大小,以及计算器的布局 本文主要介绍计算功能的实现 正文 实现/清空/改变正负/除以100 inputTex ...