本文实例讲述了java实现pdf文件截图的方法。分享给大家供大家参考,具体如下:
最近做的一个网站中,有个需求是上传pdf文件,显示pdf的封页,点击封页之后进行在线阅读,这里使用的是pdfrender对pdf进行截图。
public static boolean createscreenshoot(string source, string target) { file file = new file(source); if (!file.exists()) { system.err.println("路径[" + source + "]对应的pdf文件不存在!"); return false; } try{ randomaccessfile raf = new randomaccessfile(file, "r"); filechannel channel = raf.getchannel(); bytebuffer buf = channel.map(filechannel.mapmode.read_only, 0, channel.size()); pdffile pdffile = new pdffile(buf); int num = pdffile.getnumpages(); for(int i = 1; i < num; i++){ pdfpage page = pdffile.getpage(1); // get the width and height for the doc at the default zoom rectangle rect = new rectangle(0, 0, (int) page.getbbox() .getwidth(), (int) page.getbbox().getheight()); // generate the image image img = page.getimage(rect.width, rect.height, // width & rect, // clip rect null, // null for the imageobserver true, // fill background with white true // block until drawing is done ); bufferedimage tag = new bufferedimage(rect.width, rect.height, bufferedimage.type_int_rgb); tag.getgraphics().drawimage(img, 0, 0, rect.width, rect.height,null); fileoutputstream out = new fileoutputstream(target+i+"jpg"); jpegimageencoder encoder = jpegcodec.createjpegencoder(out); encoder.encode(tag); // jpeg编码 out.close(); } return true; }catch(exception e){ e.printstacktrace(); return true; }
另外如果需要在线显示pdf的话,需要设置响应头
response.setcontenttype("application/pdf");
附:pdfrender.jar点击此处。
更多java相关内容感兴趣的读者可查看本站专题:《java图片操作技巧汇总》、《java日期与时间操作技巧汇总》、《java操作dom节点技巧总结》、《java文件与目录操作技巧汇总》及《java数据结构与算法教程》。
希望本文所述对大家java程序设计有所帮助。
如对本文有疑问, 点击进行留言回复!!
第三次学JAVA再学不好就吃翔(part88)--ArrayList嵌套ArrayList
使用ffmpeg视频切片并加密和视频AES-128加密后播放
JAVA程序设计:最长重复子串(LeetCode:1044)
LiveGBS国标GB/T28181云端录像分布式录像存储自动清理时移回看录像下载播放
网友评论