亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

java使用renderer將pdf按頁轉換為圖片

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

項目中遇到了需要把用戶上傳的word,execl,ppt每頁截圖保存。需要先用到jacob把資源轉換為pdf,在通過pdf-renderer把每頁截圖下來。

首先下載相關jar包:下載地址

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; //如果com.sun.image找不到,就是Eclipse默認把這些受訪問限制的API設成了ERROR。只要把Windows-Preferences-Java-Complicer-Errors/Warnings里面的Deprecated and restricted API中的Forbidden references(access rules)選為Warning就可以編譯通過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 pdfToImage {   public static void main(String[] args) { String instructiopath="E:/臨時文件1.pdf"; String picturepath = "E:/臨時文件1/"; changePdfToImg(instructiopath,picturepath); }    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("創建圖片失?。?quot;); } }          */         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轉化成圖片后,釋放MappedByteBuffer資源。調用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;       }     });   } }

成功釋放MappedByteBuffer資源

Method m = FileChannelImpl.class.getDeclaredMethod("unmap",    MappedByteBuffer.class);   m.setAccessible(true);   m.invoke(FileChannelImpl.class, buf);

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
全亚洲最色的网站在线观看| www.日韩系列| 一区二区三区无码高清视频| 亚洲第一在线视频| 伊人伊成久久人综合网站| 国产精品福利无圣光在线一区| 欧美极度另类性三渗透| 成人午夜激情网| 黄色一区二区在线| 欧美日韩国产成人高清视频| 欧美精品videofree1080p| 久久久久久97| 在线观看免费高清视频97| 亚洲a在线观看| 欧美成人三级视频网站| 美女福利精品视频| 亚洲精品www久久久| 亚洲女人天堂视频| 92国产精品久久久久首页| 国产一区二区三区在线视频| 中文字幕亚洲精品| 91精品综合久久久久久五月天| 69视频在线免费观看| 欧美日韩国产麻豆| 在线观看亚洲视频| 国产精品美女久久久久av超清| 日本精品久久久久影院| 日韩精品电影网| 黄色91在线观看| 成人黄色中文字幕| 欧美成人激情图片网| 丝袜情趣国产精品| 热久久99这里有精品| 日本精品视频在线播放| 97欧美精品一区二区三区| 日韩二区三区在线| 欧美肥老妇视频| 成人在线观看视频网站| 日韩av片免费在线观看| 成人性生交大片免费观看嘿嘿视频| 欧美午夜影院在线视频| 日本a级片电影一区二区| 日韩中文字幕久久| 成人黄色激情网| 久久久综合av| 九色91av视频| 国产精品一区二区3区| 亚洲精品乱码久久久久久金桔影视| 中文字幕欧美精品在线| 国产精品成人观看视频国产奇米| 粉嫩老牛aⅴ一区二区三区| 日韩精品免费综合视频在线播放| 成人深夜直播免费观看| 奇米一区二区三区四区久久| 蜜臀久久99精品久久久无需会员| 久久躁狠狠躁夜夜爽| 中文字幕亚洲一区二区三区| 欧美激情欧美狂野欧美精品| 欧美精品久久一区二区| 欧美午夜精品久久久久久久| 久久免费高清视频| 91av视频在线观看| 日韩中文字幕在线播放| 日韩亚洲第一页| 精品视频—区二区三区免费| 亚洲精品中文字幕有码专区| 在线播放日韩精品| 91精品国产高清久久久久久91| 深夜福利一区二区| 国产美女直播视频一区| 超碰日本道色综合久久综合| 欧美精品在线看| 亚洲视频777| 成人激情在线播放| 欧美高清视频在线观看| 亚洲精品电影网在线观看| 亚洲国产日韩欧美在线动漫| 国产精品你懂得| 国产精品www| 91香蕉亚洲精品| 91美女福利视频高清| 2023亚洲男人天堂| 欧美极品在线视频| 国产精品久久色| 亚洲成人网在线| 成人伊人精品色xxxx视频| 超碰97人人做人人爱少妇| 国产a级全部精品| 69久久夜色精品国产69| 成人在线精品视频| 久久久欧美一区二区| 51久久精品夜色国产麻豆| 黑人狂躁日本妞一区二区三区| 日韩在线观看免费高清| 日本韩国欧美精品大片卡二| 亚洲xxx视频| 久久天天躁狠狠躁夜夜av| 成人自拍性视频| 欧美精品videos| 日本三级久久久| 亚洲精品日韩激情在线电影| 欧美激情综合色| 26uuu另类亚洲欧美日本老年| 亚洲精品久久久久国产| 国产区精品在线观看| 热草久综合在线| 日本中文字幕不卡免费| 国产精品视频公开费视频| 日本精品免费观看| 欧美—级高清免费播放| 成人亚洲欧美一区二区三区| 日韩毛片在线看| 精品激情国产视频| 色妞久久福利网| 中文字幕亚洲二区| 亚洲999一在线观看www| 黄色一区二区在线| 日韩在线www| 久久精品人人做人人爽| 久久精品久久精品亚洲人| 欧美视频13p| 久久精品国产电影| 日韩精品在线私人| 国产丝袜一区二区三区免费视频| 91综合免费在线| 国产精品久久在线观看| 亚洲人成网站在线播| 尤物yw午夜国产精品视频明星| 国产z一区二区三区| 97涩涩爰在线观看亚洲| 国产精品精品视频一区二区三区| 国产91精品不卡视频| 欧美精品久久久久a| 欧美午夜电影在线| 欧美一级大片在线免费观看| 国产视频观看一区| 久久久999精品视频| 精品欧美aⅴ在线网站| 一区二区福利视频| 成人免费自拍视频| 久久精品国产免费观看| 欧美日韩国产中文字幕| 91在线观看免费观看| 91精品在线国产| 97视频免费在线看| 亚洲一区二区三区乱码aⅴ蜜桃女| 色噜噜狠狠狠综合曰曰曰88av| 亚洲精品不卡在线| 在线日韩中文字幕| 国产成人精品在线| 亚洲福利视频在线| 亚洲免费电影在线观看| 国产成人在线精品| 久久精品影视伊人网| 4p变态网欧美系列| 欧美中在线观看| 清纯唯美亚洲综合| 亚洲欧美日韩直播| 日韩一区二区av| 最近2019中文字幕在线高清| 国产色综合天天综合网| 一本一本久久a久久精品牛牛影视| 亚洲精品一区中文| 久久6精品影院|