JAVA的pdf转图片方法
JAVA中实现pdf转图片可以通过第三方提供的架包,这里介绍几种常用的,可以根据自身需求选择使用。
一、icepdf。有收费版和开源版,几种方法里最推荐的。转换的效果比较好,能识别我手头文件中的中文,就是转换后可能字体的关系部分字间距有点宽。因为,字体支持是要收费的,所以转换的图片会带有官方的水印。去水印的方法可以查看另一篇文章:icepdf去水印方法
1、下载icepdf的架包,并导入项目中,这里用到4个,如下:
icepdf-core.jar、icepdf-viewer.jar、icepdf-pro.jar(貌似是去水印)、icepdf-pro-intl.jar(貌似是去水印)
icepdf-core.jar、icepdf-viewer.jar下载地址:http://download.csdn.net/detail/romantic_pk/9672082
2、附上代码例子:
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;import javax.imageio.ImageIO;import org.icepdf.core.exceptions.PDFException;
import org.icepdf.core.exceptions.PDFSecurityException;
import org.icepdf.core.pobjects.Document;
import org.icepdf.core.util.GraphicsRenderingHints;/*** pdf文件转图片(icepdf技术)* @author songjinzhou* @day 2016-11-03*/
public class PDF2IMGTest {public static void main(String[] args) {String filePath = "D:/fileUpload/ftpDownload/xxx.pdf";Document document = new Document();try {document.setFile(filePath);float scale = 1.1f;// 缩放比例(大图)// float scale = 0.2f;// 缩放比例(小图)float rotation = 90f;// 旋转角度for (int i = 0; i < document.getNumberOfPages(); i++) {BufferedImage image = (BufferedImage) document.getPageImage(i,GraphicsRenderingHints.SCREEN,org.icepdf.core.pobjects.Page.BOUNDARY_CROPBOX,rotation, scale);RenderedImage rendImage = image;try {File file = new File("D:/fileUpload/ftpDownload/icepdf_a" + i + ".jpg");// 这里png作用是:格式是jpg但有png清晰度ImageIO.write(rendImage, "png", file);} catch (IOException e) {e.printStackTrace();}image.flush();}document.dispose();} catch (PDFException e1) {e1.printStackTrace();} catch (PDFSecurityException e1) {e1.printStackTrace();} catch (IOException e1) {e1.printStackTrace();}System.out.println("======================完成============================");}
}
从转换效果来看png的清晰度会比jpg相对较高。有个小技巧请看如下两行代码,也就是转换成jpg格式但有png清晰度的图片。
File file = new File("D:/fileUpload/ftpDownload/icepdf_a" + i + ".jpg");
ImageIO.write(rendImage, "png", file);
二、pdfbox。转换效果还可以,能识别我手中文件大部分内容,有部分内容无法识别。
1、下载pdfbox的架包,并导入项目,这里用到1个jar包,如下:
pdfbox-app-2.0.2.jar jar包免费下载地址:http://download.csdn.net/detail/romantic_pk/9679121
2、附上代码例子:
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;import javax.imageio.ImageIO;import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;public class PDF2IMGTest {public static void main(String[] args) {File file = new File("c:\\test.pdf");try {PDDocument doc = PDDocument.load(file);PDFRenderer renderer = new PDFRenderer(doc);int pageCount = doc.getNumberOfPages();for (int i = 0; i < pageCount; i++) {// 方式1,第二个参数是设置缩放比(即像素)BufferedImage image = renderer.renderImageWithDPI(i, 296);// 方式2,第二个参数是设置缩放比(即像素)// BufferedImage image = renderer.renderImage(i, 2.5f);ImageIO.write(image, "PNG", new File("C:\\pdfbox_image.png"));}} catch (IOException e) {e.printStackTrace();}}
}
三、jpedal。效果不太理想,貌似对中文支持不太好,下面的lgpl版本是开源版。
1、下载jpedal的架包,并导入项目中,如下:
2、附上代码例子:
1 PdfDecoder decode_pdf = new PdfDecoder(true); 2 try { 3 decode_pdf.openPdfFile("c:\\test.pdf"); //file 4 // decode_pdf.openPdfFile("C:/jpedalPDF.pdf", "password"); //encrypted file 5 // decode_pdf.openPdfArray(bytes); //bytes is byte[] array with PDF 6 // decode_pdf.openPdfFileFromURL("http://www.mysite.com/jpedalPDF.pdf",false); 7 // decode_pdf.openPdfFileFromInputStream(in, false); 8 9 int start = 1, end = decode_pdf.getPageCount(); 10 for(int i = start; i < end+1; i++){ 11 BufferedImage img=decode_pdf.getPageAsImage(i); 12 try { 13 ImageIO.write(img, "png", new File("C:\\jpedal_image.png")); 14 } catch (IOException e) { 15 e.printStackTrace(); 16 } 17 } 18 decode_pdf.closePdfFile(); 19 } catch (PdfException e) { 20 e.printStackTrace(); 21 }
例子的3-7行还提供了几种不同的pdf打开方式,可以根据自己的需要选择使用。
转载地址:http://www.cnblogs.com/pcheng/p/5704470.html
JAVA的pdf转图片方法相关推荐
- Java制作PDF转图片小工具
背景: 前几日一位朋友突然找我帮忙将PDF转换成图片,我仗义相助,建议他使用福昕阅读器,然而他说转换需要VIP会员,老贵了.我花了半天时间寻找免费会员,结果不出所料没有找到,我一怒之下,便决定亲自动手 ...
- 【老徐子杰】PDF转图片方法(解决中文乱码)
[老徐子杰]PDF转图片方法(解决中文乱码) 欢迎交流使用(本文原创:转载请注明出处) 在做项目的时候,说实话大公司不可能使用破解版的DLL进行开发.所以ADOBE的组建不用,基本的BIMP转法面对各 ...
- java生成pdf方法_详解Java生成PDF文档方法|chu
最近项目需要实现PDF下载的功能,由于没有这方面的经验,从网上花了很长时间才找到相关的资料.整理之后,发现有如下几个框架可以实现这个功能. 1. 开源框架支持iText,生成PDF文档,还支持将XML ...
- java之pdf转图片的几种方式,以及在使用过程中遇到的问题和处理方案
java之pdf转图片的几种方式,以及在使用过程中遇到的问题和处理方案 方式 pdfBox iText(方式同上) spire.pdf.free(方式同上) 遇到的问题 图片清晰度.这种方式都有这个问 ...
- Java实现pdf转图片的工具类(三种方法实现PDF转图片的案例)【亲测可用】
提示:有些时候我们需要在项目中展示PDF,所以我们可以将PDF转为图片,然后已图片的方式展示,效果很好.Java使用各种技术将pdf转换成图片格式,并且内容不失帧.清晰可见,该工具类也是开发中常用到的 ...
- Java 实现PDF转图片,去除PDF水印,图片转PDF
1.依赖jar包 <dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian& ...
- Java给PDF添加图片水印,且可以文字定位
这两天公司开发需要对PDF增加特定图片,类似于电子印章效果,试了许多网上的方式,经过测试PDF只可以插入图片或者通过RSA实现专属签章,我觉得插入图片好用一些,效果如下: 这是定位了<盖章> ...
- java生成PDF(图片,模板,表格)
刚接到了一个需求,生成一个pdf,一开始以为挺简单的,通过模板生成嘛,我也发过相应的文章,根据模板直接生成pdf,响应到前端或者根据模板生成pdf,直接指定下载位置,这两种方案都可以,不过这篇文章主要 ...
- 转https_PDF怎么转成JPG最简单?分享免费的PDF转图片方法
PDF怎么转成JPG最简单?能够独立完成PDF文件转换是我们日常工作中需要掌握的一项技能,PDF转换方面就有PDF转Word.PDF转PPT.PDF转图片等,也包括Word转PDF.PPT转PDF.图 ...
最新文章
- MONGODB 数据的存储顺序发现不是按_ID 的顺序存储的原因
- 安装引导黑屏_南京课工场IT培训:引导过程与服务控制(理论笔记篇)
- webpack学习之路(四)webpack-hot-middleware实现热更新
- SGU 117 Counting
- ssm框架逻辑删除mysql_MybatisPlus--CRUD接口及主键增长策略、自动填充、乐观锁更新数据...
- 【SQL】血缘解析 SQL parser 工具介绍
- 即插即用!开源项目【云框架】发布“基于Spring cloud的微服务架构”
- 用《内网穿山甲》共享内网中的远程桌面服务
- 计算机实验报告简要实验步骤,计算机实验报告模板
- RUBY发送验证码通知短信(互亿无线)
- vue中如何使用h5自定义标签?
- 林信良(良葛格)在CSDN上也开专栏了~
- 如何从零开始解读什么叫产品经理
- [学习SLAM]数学中的几何变换-向量叉乘/旋转轴、旋转角度和旋转矩阵/坐标系变换
- css 实现图片间用间隔线(竖线)
- error C2248: “CObject::CObject”: 无法访问 private 成员(在“CObject”类中声明)
- 【ASE入门学习】ASE入门系列六——塞尔达扰动火焰
- vi 跳到文件最后一行
- JNI官方规范中文版
- 编译release版本签名系统