引入pdfbox使用的jar

pdfbox-2.0.8.jar,maven依赖如图:

org.apache.pdfbox

pdfbox

2.0.8

切图:按页切图并生成对应的png格式的图片,输出至相应的目录下

/**

* pdf切割成图片

* @param url1 //源文件路径

* @param url2 //切割后图片存储路径

* @param contractId//合同模板id

* @throws IOException

*/

public static void cutting(String url1, String url2, String contractId) throws IOException{

//将pdf按页生成图片

File file = new File(url1);

Rectangle tempReader = null;

PdfReader pdfReader = null;

PDDocument doc = null;

try {

String urls = url2+contractId+"/";

File files = new File(urls);

if(!files.exists()){

files.mkdirs();

}

// 读入PDF

pdfReader = new PdfReader(url1);

// 计算PDF页码数

int pageCount = pdfReader.getNumberOfPages();

System.out.println(pageCount);

doc = PDDocument.load(file);

PDFRenderer renderer = new PDFRenderer(doc);

// 循环每个页码

for (int i = 1; i <= pdfReader.getNumberOfPages(); i++)

{

tempReader = pdfReader.getPageSize(i);

int height = (int)tempReader.getHeight();

int width = (int)tempReader.getWidth();

System.out.println(height+"..."+width);

BufferedImage image = renderer.renderImageWithDPI(i-1, 96); // Windows native DPI

BufferedImage tempImage = resize(image,width,height);

ImageIO.write(tempImage, "PNG", new File(urls+contractId+"_"+i+".png"));

}

} catch (IOException e) {

e.printStackTrace();

}finally{

if(null!=doc){

doc.close();

}

if(null!=pdfReader){

pdfReader.close();

}

}

}

调用重绘图片方法resize(image,width,height)

//限制pdf转换成图片时的大小

private static BufferedImage resize(BufferedImage source, int targetW, int targetH) {

int type=source.getType();

BufferedImage target=null;

double sx=(double)targetW/source.getWidth();

double sy=(double)targetH/source.getHeight();

if(sx>sy){

sx=sy;

targetW=(int)(sx*source.getWidth());

}else{

sy=sx;

targetH=(int)(sy*source.getHeight());

}

if(type==BufferedImage.TYPE_CUSTOM){

ColorModel cm=source.getColorModel();

WritableRaster raster=cm.createCompatibleWritableRaster(targetW, targetH);

boolean alphaPremultiplied=cm.isAlphaPremultiplied();

target=new BufferedImage(cm,raster,alphaPremultiplied,null);

}else{

target=new BufferedImage(targetW, targetH,type);

}

Graphics2D g=target.createGraphics();

g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);

g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy));

g.dispose();

return target;

}

java 切图_java用pdfbox切图并重绘宽高相关推荐

  1. java 随机生成图_java – 如何生成随机图?

    我希望能够在 Java中生成随机,无向和连接的图形.另外,我希望能够控制图中的最大顶点数.我不确定解决这个问题的最佳方法是什么,但这里有一些我能想到的: (1)生成一个介于0和n之间的数字,并将其作为 ...

  2. java 甘特图_Java报表软件--甘特图(Gantt chart)深度解析

    什么是甘特图(Gantt chart) 一般对甘特图的解释是:以图示的方式通过活动列表和时间刻度形象地表示出任何特定项目的活动顺序与持续时间,即甘特图(Gantt chart)是将活动与时间联系起来的 ...

  3. java集合类继承关系图_java集合继承关系图

    面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 数组虽然也可以存储对象,但长度是固定的:集合长度是可变的,数组中可以存储基 ...

  4. java工程窗口程序_java工程开发之图形化界面之(第二课)

    上一节主要是讨论小的应用程序,在这里我们将采用一种全新的方式来重新编写它. 在这里我们注重关注JFrame和JOptionPane.这些类提供了在JAVA应用程序使用图形的方法以及在JAVA程序中对I ...

  5. java 雷达图_Java 创建Excel雷达图

    class="MsoNormal">本文介绍通过Java程序在Excel工作表中创建雷达图表的方法. 程序环境 Spire.Xls.jar 免费版本3.9.1 Jdk版本要求 ...

  6. java 实现BufferedImage和ImageReader两种方式获取图片宽高、判断图片类型、获取图片大小工具类代码以及测试响应结果

    源码: import org.springframework.web.multipart.MultipartFile;import javax.imageio.ImageIO; import java ...

  7. 切图教程,app切图命名总结

    再根据自己的习惯对APP切图命名进行整理总结. 结语: 作为一个有强迫症的设计师,希望产出是有缜密的思维逻辑,当然包括细节. 文字有的部分参考其它文章,整理后根据自己的工作经验作出的总结. 自己也还在 ...

  8. 【PDFBox】PDFBox操作PDF文档之添加本地图片、添加网络图片、图片宽高自适应、图片水平垂直居中对齐

    这篇文章,主要介绍PDFBox操作PDF文档之添加本地图片.添加网络图片.图片宽高自适应.图片水平垂直居中对齐. 目录 一.PDFBox操作图片 1.1.添加本地图片 (1)案例代码 (2)运行效果 ...

  9. android 系统的切图方式_UI设计切图规范

    移动UI设计切图是UI设计师最重要的设计输出物,切图资源输出是否规范直接影响到工程师对设计效果的还原度.设计师的切图输出物是是体现一个设计师专业水准的重要标准,同时也是设计师表达自己对设计态度的最有力 ...

最新文章

  1. 创立创造创建的区别_【干货|知识分享】Solidworks与Rhino有什么区别呢?
  2. spring aop抽取切点表达式
  3. 【CSS3】table的css属性
  4. 【Linux环境部署】最新版 elasticsearch + kibana(7.15.0)安装、配置、启动(多个问题处理 + kibana仪表盘使用)
  5. postgis启动_PostgreSQL的安装和启动方法大全
  6. Wooden Sticks POJ - 1065(最大上升子序列+动态规划状态转移思维)
  7. tomcat 8集合memcache所需完整jar包_使用 zabbix 监控 tomcat(包含jvm监控)
  8. STM8学习笔记---寄存器操作之位或和位与运算
  9. java拦截器跳转页面跳转页面跳转_java Struts2 在拦截器里的跳转问题
  10. 服务器端可控情形的Javascript跨域访问解决方法
  11. html缩放排版乱了_交作业 | 代码排版逐行显现效果
  12. 【快学springboot】2.Restful简介,SpringBoot构建Restful接口
  13. cisco命令防ping_如何使用Cisco命令阻止访问特定网站
  14. 数学基础(9)--MATLAB 数据拟合 SSE,MSE,RMSE,R-square
  15. python数字雨_用Python实现黑客帝国代码雨效果(3种方式)
  16. Altium Designer 2020 学习笔记(四)------PCB布线、DRC检查、拼版设计、资料输出(配动态图操作演示)
  17. Android逆向工程实例 -- 善领安卓版DSA APP手势操作bug修复
  18. 如何在vm虚拟机里面安装win10操作系统
  19. 狂神说SpringCloud学习笔记
  20. Qt之简易版网络调试助手

热门文章

  1. [渝粤教育] 西南科技大学 教育学原理 在线考试复习资料
  2. OEM (Oracle 企业管理器)登录提示您的用户名/或口令无效的解决办法
  3. 【机器人学、机器视觉与控制】臂形机器人——机器人运动学
  4. openshift/origin工作记录(9)——openshift结合jenkins实现持续集成
  5. LiteOS内核开发(二)
  6. css 颤动_颤动-微光效果
  7. 【统计技术】运营商数据:三大运营商2012年1月手机用户数据
  8. 【深度学习基础】数字手势识别实验:1.任务描述
  9. [原创]FIRC-Gesture数字手势识别VOC数据集简介
  10. 解析 cifar10 的压缩包到图片