java中pdf转图片的实现方法
程序员文章站
2024-03-11 17:19:25
java中实现pdf转图片可以通过第三方提供的架包,这里介绍几种常用的,可以根据自身需求选择使用。
一、icepdf。有收费版和开源版,几种方法里最推荐的。转换的效果比较...
java中实现pdf转图片可以通过第三方提供的架包,这里介绍几种常用的,可以根据自身需求选择使用。
一、icepdf。有收费版和开源版,几种方法里最推荐的。转换的效果比较好,能识别我手头文件中的中文,就是转换后可能字体的关系部分字间距有点宽。因为,字体支持是要收费的,所以转换的图片会带有官方的水印。去水印的方法可以查看另一篇文章:
1、下载icepdf的架包,并导入项目中,这里用到4个,如下:
2、附上代码例子:
string filepath = "c:/test.pdf"; document document = new document(); document.setfile(filepath); float scale = 2.5f;//缩放比例 float rotation = 0f;//旋转角度 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("c:/iecpdf_" + i + ".png"); imageio.write(rendimage, "png", file); 14 } catch (ioexception e) { e.printstacktrace(); } image.flush(); } document.dispose();
例子中是pdf转png格式的,也可以将12、13行改成jpg,转出jpg格式的,但是从转换效果来看png的清晰度会相对较高。有个小技巧是12行改成jpg,但13行使用png,也就是转换成jpg格式但有png清晰度的图片。
二、pdfbox。转换效果还可以,能识别我手中文件大部分内容,有部分内容无法识别。
1、下载pdfbox的架包,并导入项目,这里用到2个,如下:
2、附上代码例子:
file file = new file("c:\\test.pdf"); try { pddocument doc = pddocument.load(file); pdfrenderer renderer = new pdfrenderer(doc); 5 int pagecount = doc.getnumberofpages(); for(int i=0;i<pagecount;i++){ bufferedimage image = renderer.renderimagewithdpi(i, 296); // bufferedimage image = renderer.renderimage(i, 2.5f); imageio.write(image, "png", new file("c:\\pdfbox_image.png")); } } catch (ioexception e) { e.printstacktrace(); }
例子中rederimagewithdpi的第二个参数为dpi分辨率单位,可根据需求调节大小,代码第八行提供了架包里另一种转图片的方法,第二个参数为缩放比。
三、jpedal。效果不太理想,貌似对中文支持不太好,下面的lgpl版本是开源版。
1、下载jpedal的架包,并导入项目中,如下:
2、附上代码例子:
pdfdecoder decode_pdf = new pdfdecoder(true); try { decode_pdf.openpdffile("c:\\test.pdf"); //file // decode_pdf.openpdffile("c:/jpedalpdf.pdf", "password"); //encrypted file // decode_pdf.openpdfarray(bytes); //bytes is byte[] array with pdf // decode_pdf.openpdffilefromurl("http://www.mysite.com/jpedalpdf.pdf",false); // decode_pdf.openpdffilefrominputstream(in, false); int start = 1, end = decode_pdf.getpagecount(); for(int i = start; i < end+1; i++){ bufferedimage img=decode_pdf.getpageasimage(i); try { imageio.write(img, "png", new file("c:\\jpedal_image.png")); } catch (ioexception e) { e.printstacktrace(); } } decode_pdf.closepdffile(); } catch (pdfexception e) { e.printstacktrace(); }
例子的3-7行还提供了几种不同的pdf打开方式,可以根据自己的需要选择使用。
以上这篇java中pdf转图片的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。