麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Java > 正文

java實現pdf按頁轉換為圖片

2024-07-14 08:43:16
字體:
來源:轉載
供稿:網友

本文實例為大家分享了java實現pdf按頁轉換為圖片的具體代碼,供大家參考,具體內容如下

本程序是利用jacob.jar包實現的,關于jacob.jar的配置見我上一篇文章,程序中可配置參數選擇圖片清晰圖。

package core.util; import java.awt.Image;import java.awt.Rectangle;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.RandomAccessFile;import java.lang.reflect.Method;import java.nio.MappedByteBuffer;import java.nio.channels.FileChannel;import java.security.AccessController;import java.security.PrivilegedAction; import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEGEncodeParam;import com.sun.image.codec.jpeg.JPEGImageEncoder;import com.sun.pdfview.PDFFile;import com.sun.pdfview.PDFPage; public class PDFchangToImage { public static int changePdfToImg(String instructiopath,String picturepath) { int countpage =0; try { //instructiopath ="D:/instructio/2015-05-16/Android 4編程入門經典.pdf" //picturepath = "D:/instructio/picture/2015-05-16/";  File file = new File(instructiopath); RandomAccessFile raf = new RandomAccessFile(file, "r"); FileChannel channel = raf.getChannel(); MappedByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY,  0, channel.size()); PDFFile pdffile = new PDFFile(buf); //創建圖片文件夾 File dirfile = new File(picturepath);  if(!dirfile.exists()){  dirfile.mkdirs(); } //獲得圖片頁數 countpage = pdffile.getNumPages(); for (int i = 1; i <= pdffile.getNumPages(); i++) { PDFPage page = pdffile.getPage(i); Rectangle rect = new Rectangle(0, 0, ((int) page.getBBox()  .getWidth()), ((int) page.getBBox().getHeight())); int n = 2; /** 圖片清晰度(n>0且n<7)【pdf放大參數】 */ Image img = page.getImage(rect.width * n, rect.height * n,  rect, /** 放大pdf到n倍,創建圖片。 */  null, /** null for the ImageObserver */  true, /** fill background with white */  true /** block until drawing is done */ ); BufferedImage tag = new BufferedImage(rect.width * n,  rect.height * n, BufferedImage.TYPE_INT_RGB); tag.getGraphics().drawImage(img, 0, 0, rect.width * n,  rect.height * n, null); /**  * File imgfile = new File("D://work//mybook//FilesNew//img//" +  * i + ".jpg"); if(imgfile.exists()){  * if(imgfile.createNewFile()) { System.out.println("創建圖片:"+  * "D://work//mybook//FilesNew//img//" + i + ".jpg"); } else {  * System.out.println("創建圖片失敗!"); } }  */ FileOutputStream out = new FileOutputStream(picturepath+"/" + i  + ".png"); /** 輸出到文件流 */ JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); JPEGEncodeParam param2 = encoder.getDefaultJPEGEncodeParam(tag); param2.setQuality(1f, true); /** 1f~0.01f是提高生成的圖片質量 */ encoder.setJPEGEncodeParam(param2); encoder.encode(tag); /** JPEG編碼 */ out.close(); } channel.close(); raf.close(); unmap(buf); /** 如果要在轉圖片之后刪除pdf,就必須要這個關閉流和清空緩沖的方法 */ } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return countpage;  }  @SuppressWarnings("unchecked") public static void unmap(final Object buffer) { AccessController.doPrivileged(new PrivilegedAction() { public Object run() { try {  Method getCleanerMethod = buffer.getClass().getMethod(  "cleaner", new Class[0]);  getCleanerMethod.setAccessible(true);  sun.misc.Cleaner cleaner = (sun.misc.Cleaner) getCleanerMethod  .invoke(buffer, new Object[0]);  cleaner.clean(); } catch (Exception e) {  e.printStackTrace(); } return null; } }); }}

如果需要將word轉pdf,也可參考我上一篇文章。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品免费久久久 | 久草最新 | 精品亚洲午夜久久久久91 | 久久人人爽人人爽人人片av免费 | 一级免费特黄视频 | 免费久久精品 | 久久另类视频 | 黄色一级片在线免费观看 | 视频在线亚洲 | 九九热视频这里只有精品 | 特片网久久 | 中文在线观看www | 成人免费福利 | 小视频免费在线观看 | 国产乱淫a∨片免费观看 | 91一区二区三区久久久久国产乱 | 被啪羞羞视频在线观看 | 日韩视频高清 | 欧美一级一区二区三区 | 香蕉视频h | 伊人在线视频 | 日本成年免费网站 | 免费男女乱淫真视频 | 久久久久国产精品久久久久 | 免费国产一区二区视频 | 国产精品久久av | 国产精品久久久久久久久久三级 | 国产精品久久久久久一区二区三区 | 精品99在线视频 | 91av99| 在线免费黄色网 | 久久亚洲国产精品 | 日本视频免费看 | 午夜影院在线免费观看 | 久久亚洲成人网 | 91女上位 在线播放 性欧美日本 | 久久成人免费观看 | 国产精品久久久久久238 | 中文字幕激情视频 | 久久影院在线观看 | 国产精品99久久免费观看 |