项目中pdf文件太大,在手机端打开缓慢。需要将pdf文件转换成图片。加载比较快,增加用户体验。话不多说,直接上干货。

一、在pom引入依赖的jar

org.apache.pdfbox

fontbox

2.0.19

org.apache.pdfbox

pdfbox

2.0.19

二、上代码

package com.wlsj.product.test;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import java.util.Scanner;

import javax.imageio.ImageIO;

import org.apache.pdfbox.pdmodel.PDDocument;

import org.apache.pdfbox.rendering.PDFRenderer;

/**

*

product-jzfp

*

*

* @author : 你的名字

* @date : 2020-05-11 14:36

**/

public class PDFTest {

//可自由确定起始页和终止页

public static void pdf2png(String fileAddress, String filename, int indexOfStart, int indexOfEnd) {

// 将pdf装图片 并且自定义图片得格式大小

File file = new File(fileAddress + "\\" + filename + ".pdf");

try {

PDDocument doc = PDDocument.load(file);

PDFRenderer renderer = new PDFRenderer(doc);

int pageCount = doc.getNumberOfPages();

for (int i = indexOfStart; i < indexOfEnd; i++) {

BufferedImage image = renderer.renderImageWithDPI(i, 144); // Windows native DPI

// BufferedImage srcImage = resize(image, 240, 240);//产生缩略图

ImageIO.write(image, "PNG", new File(fileAddress + "\\" + filename + "_" + (i + 1) + ".png"));

}

} catch (IOException e) {

e.printStackTrace();

}

}

//转换全部的pdf

public static void pdf2png(String fileAddress, String filename) {

// 将pdf装图片 并且自定义图片得格式大小

File file = new File(fileAddress + "\\" + filename + ".pdf");

try {

PDDocument doc = PDDocument.load(file);

PDFRenderer renderer = new PDFRenderer(doc);

int pageCount = doc.getNumberOfPages();

for (int i = 0; i < pageCount; i++) {

BufferedImage image = renderer.renderImageWithDPI(i, 144); // Windows native DPI

// BufferedImage srcImage = resize(image, 240, 240);//产生缩略图

ImageIO.write(image, "PNG", new File(fileAddress + "\\" + filename + "_" + (i + 1) + ".png"));

}

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.println("请输入需要转换的pdf的地址,例如:D:\\robert");

String fileAddress = sc.nextLine();

System.out.println("请输入需要转换的pdf的名称,不要加.pdf后缀,例如 操作系统概念:");

String filename = sc.nextLine();

System.out.println("请输入开始转换的页码,从0开始,例如 5:");

int indexOfStart = sc.nextInt();

System.out.println("请输入停止转换的页码,-1为全部,例如 10:");

int indexOfEnd = sc.nextInt();

if (indexOfEnd == -1) {

pdf2png(fileAddress, filename);

} else {

pdf2png(fileAddress, filename, indexOfStart, indexOfEnd);

}

}

}

三、测试输出

java pdf文件转换图片,pdf文件转图片(java实现)相关推荐

  1. Java使用aspose把PDF文件转换成PNG文件,以及把PDF文件水印转换成PNG格式

    Java代码把PDF文件转换成PNG文件 需要引用aspose包,引入操作我写了一个博客,地址如下 https://blog.csdn.net/weixin_46713508/article/deta ...

  2. vs 如何将源文件转换成可执行文件_如何将图片文件转换成PDF文件?

    小编的一个朋友是做室内设计的,大家都知道做室内设计或者其它一些关于设计方面的工作都少不了画图.他每天会画很多张图并且还会反复修改,非常麻烦.有的图会因为不小心鼠标或者键盘误点了,导致一些图的数据错误, ...

  3. java编程将HTML文件转换成PDF文件

    网上有好几种方法可以将将HTML文件转换成PDF文件但是有些对HTML文件格式要求比较严格,稍微错了一些就不能生成我们所要的PDF文件,这里我推荐一个 PD4ML,它可以解决HTML文件格式不正确的问 ...

  4. 怎么把图片文件转换成PDF文件

    除了office文件外,我们最常用的就是PDF文件了.因为PDF文件格式可以将文字.字型.格式.颜色及独立于 设备和分辨率的图形图像等封装在一个文件中.该格式文件还可以包含超文本链接.声音和动态影像等 ...

  5. Java使用aspse实现Excel文件转换成PDF文件

    使用Java代码把Excel文件转换成PDF文件 需要引用aspose包,引入操作我写了一个博客,地址如下 https://blog.csdn.net/weixin_46713508/article/ ...

  6. OFD文件转换成PDF格式,Java语言实现

    OFD文件转换成PDF格式,Java语言实现 我个人的思路大致是这样的.首先在指定路径创建一个文件夹,然后每次要转换的时候都把OFD文件统一放到指定的文件夹内进行转换.这样写代码的时候只需要循环遍历一 ...

  7. 使用java对html源代码(拼装、可获取页面源代码)转换为(html页面,doc文档文件,pdf格式),doc文件转换成为pdf,文件的删除、压缩功能

    目录: 1.转换成为html页面 2.html源代码转换成为doc文件 3.html源代码转换成为pdf文件 4.压缩多个文件成为一个zip文件 5.对文件进行删除 实施过程: A.html页面的实现 ...

  8. Acrobat如何将word文件转换成pdf格式

    很多朋友电脑装了Adobe Acrobat,却不知道Acrobat如何将word文件转换成pdf格式,现在就给大家讲解一下.比如,我们电脑安装Adobe Acrobat  Professional 7 ...

  9. pdf文件转换成jpg文件

    pdf文件转换成jpg文件 扫描的文件是PDF格式的,应公司的要求,需要将它转成JPG图片格式,这让我伤透了脑筋,经过自己网上教程的搜集和软件下载尝试,终于让我找到了一个蛮不错的转换工具,帮我解决了眼 ...

  10. OFD文件转换支持PDF,PNG,GIF,BMP

    OFD文件转换服务可将发票OFD或公文OFD文件转换成PDF或图片,并实现检测发票OFD是否被篡改,文件转换服务以在线的方式将客户的OFD格式文件转换为所需的格式,包括PDF,PNG,GIF,BMP等 ...

最新文章

  1. java jndi 例子_MEJB附录B,jndi例子无法运行的问题
  2. Spring 多线程下注入bean问题
  3. ActiveRecord学习(六):总结
  4. matlab在linux下面的相对路径的写法
  5. ad20如何画出pcb板大小_多层pcb板是如何抄板的?
  6. ios添加设备真机测试,以及Undefined symbols for architecture x86_64:''错误
  7. 如何用css3实现简单旋转的风车
  8. Spring Boot2 整合 Shiro ,两种方式全总结!
  9. 我的起点(蛇形矩阵)
  10. java接口自动化(四) - 企业级代码管理工具Git的应用
  11. vue2.0 实现导航守卫(路由守卫)
  12. C++11 | 正则表达式(4)
  13. 约瑟夫环c语言程序完整版,约瑟夫环C语言实现源代码(1)
  14. 第一课:OD软件界面基本介绍
  15. 如何设计更好的脉搏血氧仪:实施
  16. 配置Eclipse for Java 9
  17. 用 Java 实现梯度下降,看这篇就对了!
  18. 加拿大标准CAN/ULC-S102与美国标准ASTM E84 一样吗?
  19. 第 三 十 八 天:Apache 选 项 和 模 块 问 题 附:php
  20. (附源码)计算机毕业设计SSM基于ETC用户的自驾游推荐系统

热门文章

  1. 7年加工作经验的程序员,从大厂跳槽出来,遭遇了什么?
  2. php 拼接html字符串,php截断带html字符串文章内容的方法
  3. python 报错 'gbk' codec can't encode character '\xb5' in position 7431: illegal multib
  4. 视觉特效专家24点行业工作经验总结
  5. 微信公众号代运营的的技巧有哪些(2)
  6. Envoy 调试流量的常用技巧直播分享及问答整理
  7. 【转载】深入了解scanf()/getchar()和gets()等函数,C++系列教程,C++实例教程,C++
  8. k8s 超详细总结,面试必问
  9. [保姆级教程]解决Centos 8下无法更新的问题 (附无痕迁徙到Rocky Linux的方法)
  10. 万洲金业:黄金ETF如何影响黄金价格?