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

首頁 > 開發 > Java > 正文

java實現Img與PDF相互轉換

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

本文實例為大家分享了java實現Img與PDF相互轉換的具體代碼,供大家參考,具體內容如下

不善于表達,就直接貼出代碼吧。請大牛忽視我。

import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.util.Map; import java.util.Map.Entry; import java.util.TreeMap;  import com.Utils.ImgFileTool; import com.lowagie.text.Document; import com.lowagie.text.Image; import com.lowagie.text.Rectangle; import com.lowagie.text.pdf.PdfCopy; import com.lowagie.text.pdf.PdfImportedPage; import com.lowagie.text.pdf.PdfReader; import com.lowagie.text.pdf.PdfWriter; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; import com.sun.pdfview.PDFFile; import com.sun.pdfview.PDFPage;  /**  *  * @author hubiao  * @dateTime 2014-06-07  *   本工具對實現對IMG與PDF相互轉換。  *   運行測試需要導入以下2個jar包  *     itext-2.0.2.jar    *     PDFRenderer.jar  *  */ @SuppressWarnings("unused") public class ImgPdfUtils {   public static void main(String[] args) throws Exception {     //PDF包提取 pdf     //pdfExtraction();          //pdf轉jpg     //pdfToJpg("E://java//資料pdf//1.pdf","E://java//資料pdf//1.jpg",1);          //將多個jpg直接合并成pdf包     //extractionPdf("F://temp//Project//數據//dfdsfds//巴黎公社活動家傳略_img","F://temp//Project//數據//dfdsfds//巴黎公社活動家傳略_img.pdf");          //jpg轉pdf     //jpgToPdf();          //文件排序     //listOrder();          ImgFileTool.imgMerageToPdf(new File("F://temp//Project//數據//dfdsfds//巴黎公社活動家傳略_img").listFiles(),new File("F://temp//Project//數據//dfdsfds//","巴黎公社活動家傳略.pdf"));   }      private static void listOrder() {          File[] listFiles = new File("F://temp//Project//數據//dfdsfds//巴黎公社活動家傳略_img").listFiles();     TreeMap<Integer, File> tree = new TreeMap<Integer, File>();     for(File f : listFiles)     {       tree.put(Integer.parseInt(f.getName().replaceAll(".jpg$", "")), f);     }     for(Entry<Integer, File> eif : tree.entrySet())     {       System.out.println(eif.getKey()+"="+eif.getValue().toString());     }   }   /**    * @param list 圖片集合    * @param file 保存路徑    * @return true,合并完成    *   如果文件名不是1.jpg,2.jpg,3.jpg,4.jpg這樣的。則需要自己重寫TreeMap的排序方式!    */   public static boolean imgMerageToPdf(File[] list, File file)throws Exception {     //1:對圖片文件通過TreeMap以名稱進行自然排序     Map<Integer,File> mif = new TreeMap<Integer,File>();     for(File f : list)       mif.put(Integer.parseInt(f.getName().replaceAll(".jpg$", "")), f);          //2:獲取第一個Img的寬、高做為PDF文檔標準     ByteArrayOutputStream baos = new ByteArrayOutputStream(2048*3);     InputStream is = new FileInputStream(mif.get(1));     for(int len;(len=is.read())!=-1;)       baos.write(len);          baos.flush();     Image image = Image.getInstance(baos.toByteArray());     float width = image.width();     float height = image.height();     baos.close();          //3:通過寬高 ,實例化PDF文檔對象。     Document document = new Document(new Rectangle(width,height));     PdfWriter pdfWr = PdfWriter.getInstance(document, new FileOutputStream(file));     document.open();          //4:獲取每一個圖片文件,轉為IMG對象。裝載到Document對象中     for(Entry<Integer,File> eif : mif.entrySet())     {       //4.1:讀取到內存中       baos = new ByteArrayOutputStream(2048*3);       is = new FileInputStream(eif.getValue());       for(int len;(len=is.read())!=-1;)         baos.write(len);       baos.flush();              //4.2通過byte字節生成IMG對象       image = Image.getInstance(baos.toByteArray());       Image.getInstance(baos.toByteArray());       image.setAbsolutePosition(0.0f, 0.0f);              //4.3:添加到document中       document.add(image);       document.newPage();       baos.close();     }          //5:釋放資源     document.close();     pdfWr.close();          return true;   }   /**    *    * @param source 源文件    * @param target 目標文件    * @param x 讀取源文件中的第幾頁    */   private static void pdfToJpg(String source,String target,int x) throws Exception {     //創建從中讀取和向其中寫入(可選)的隨機訪問文件流,R表示對其只是訪問模式     RandomAccessFile rea = new RandomAccessFile(new File(source), "r");      //將流讀取到內存中,然后還映射一個PDF對象     FileChannel channel = rea.getChannel();     ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY,0, channel.size());     PDFFile pdfFile = new PDFFile(buf);     PDFPage page = pdfFile.getPage(x);       // get the width and height for the doc at the default zoom      java.awt.Rectangle rect = new java.awt.Rectangle(0, 0, (int) page.getBBox()          .getWidth(), (int) page.getBBox().getHeight());       // generate the image      java.awt.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); // 輸出到文件流      JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);      encoder.encode(tag); // JPEG編碼      out.close();       }   /**    * @param source 源PDF文件路徑    * @param target 保存PDF文件路徑    * @param pageNum 提取PDF中第pageNum頁    * @throws Exception     */   private static void pdfExtraction(String source,String target,int pageNum) throws Exception{     //1:創建PDF讀取對象     PdfReader pr = new PdfReader(source);     System.out.println("this document "+pr.getNumberOfPages()+" page");          //2:將第page頁轉為提取,創建document對象     Document doc = new Document(pr.getPageSize(pageNum));          //3:通過PdfCopy轉其單獨存儲     PdfCopy copy = new PdfCopy(doc, new FileOutputStream(new File(target)));     doc.open();     doc.newPage();          //4:獲取第1頁,裝載到document中。     PdfImportedPage page = copy.getImportedPage(pr,pageNum);     copy.addPage(page);           //5:釋放資源     copy.close();     doc.close();     pr.close();   }   /**    * @param pdfFile 源PDF文件    * @param imgFile  圖片文件    */   private static void jpgToPdf(File pdfFile,File imgFile) throws Exception {     //文件轉img     InputStream is = new FileInputStream(pdfFile);     ByteArrayOutputStream baos = new ByteArrayOutputStream();     for(int i;(i=is.read())!=-1;)     {       baos.write(i);     }     baos.flush();          //取得圖像的寬和高。     Image img = Image.getInstance(baos.toByteArray());     float width = img.width();     float height = img.height();     img.setAbsolutePosition(0.0F, 0.0F);//取消偏移     System.out.println("width = "+width+"/theight"+height);          //img轉pdf     Document doc = new Document(new Rectangle(width,height));     PdfWriter pw = PdfWriter.getInstance(doc,new FileOutputStream(imgFile));     doc.open();     doc.add(img);          //釋放資源     System.out.println(doc.newPage());     pw.flush();     baos.close();     doc.close();     pw.close();   }    } 

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


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
38少妇精品导航| 亚洲女人初尝黑人巨大| 亚洲成av人片在线观看香蕉| 亚洲精品动漫100p| 亚洲视频在线观看免费| 欧美激情在线有限公司| 欧美疯狂性受xxxxx另类| 色中色综合影院手机版在线观看| 欧美高清自拍一区| 91麻豆桃色免费看| 亚洲大胆人体av| 夜夜嗨av一区二区三区四区| 国产精品久久久久久久久久三级| 欧美一级电影在线| 亚洲欧洲xxxx| 亚洲精美色品网站| 91久久嫩草影院一区二区| 欧美中文字幕在线播放| 欧美疯狂做受xxxx高潮| 亚洲性无码av在线| 国产精品18久久久久久首页狼| 成人福利免费观看| 色噜噜狠狠狠综合曰曰曰88av| 久久国产精品久久国产精品| 国产欧美日韩丝袜精品一区| 欧美精品福利在线| 在线看福利67194| 欧美成人激情图片网| 中文字幕成人在线| 欧美猛交ⅹxxx乱大交视频| 国产精品精品久久久久久| 亚洲a∨日韩av高清在线观看| 国产精品视频区1| 日韩av电影在线免费播放| 中文字幕亚洲综合久久筱田步美| 国内精品免费午夜毛片| 色综合久久中文字幕综合网小说| 亚洲欧美激情在线视频| 午夜精品久久久久久久99黑人| 久久国产色av| 亚洲国产日韩欧美综合久久| 欧美日韩国产二区| 亚洲视频电影图片偷拍一区| 久久国产精品网站| 91嫩草在线视频| 欧美一乱一性一交一视频| 亚洲韩国欧洲国产日产av| 欧美中文字幕第一页| 欧美性xxxx18| 日韩欧美在线一区| 91日韩在线播放| 亚洲女在线观看| 久久人人爽人人爽人人片亚洲| 欧美刺激性大交免费视频| 久久五月情影视| 日韩av中文字幕在线播放| 2019日本中文字幕| 欧美性xxxxhd| 久久久久免费精品国产| 欧美三级xxx| 欧美一级视频免费在线观看| 国产精品久久久久久久午夜| 中文字幕精品在线| 欧美丝袜一区二区三区| 国产精品综合网站| 中文字幕欧美日韩| 成人字幕网zmw| 国产亚洲精品久久| 色悠悠久久久久| 色噜噜狠狠狠综合曰曰曰88av| 久久视频中文字幕| 色与欲影视天天看综合网| 国产日韩在线亚洲字幕中文| 亚洲女人天堂色在线7777| 亚洲а∨天堂久久精品9966| 668精品在线视频| 亚洲bt天天射| 在线播放亚洲激情| 亚洲精品视频在线播放| 国产精品成人av在线| 欧美亚洲在线视频| 91精品在线播放| 成人激情视频在线播放| 亚洲国产精品系列| 国产suv精品一区二区| 国产精品男人的天堂| 成人写真视频福利网| 欧美日本黄视频| 操日韩av在线电影| 国产精品久久久久久久久久久久久久| 91午夜在线播放| 国产精品高潮视频| 美女av一区二区| 亚洲欧美资源在线| 国模精品系列视频| 欧美一区二区三区……| 国产精品久久久久久久久久| 午夜精品久久久久久99热软件| 亚洲性线免费观看视频成熟| 精品国产网站地址| 2021久久精品国产99国产精品| 亚洲国产高清福利视频| 欧美第一淫aaasss性| 亚洲高清av在线| 91在线观看免费| 欧美日韩国产色视频| 夜夜狂射影院欧美极品| 欧美午夜精品久久久久久人妖| 国产精品99导航| 亚洲国产天堂久久国产91| 97国产suv精品一区二区62| 日韩在线观看精品| 久久伊人精品一区二区三区| 97精品国产91久久久久久| 国产一区二区三区网站| 日韩中文字幕精品视频| 亚洲自拍小视频| 久久久999精品免费| 成人情趣片在线观看免费| 97国产真实伦对白精彩视频8| 欧洲午夜精品久久久| 亚洲变态欧美另类捆绑| 久久免费精品视频| 亚洲一区二区三区毛片| 91久久中文字幕| 欧美日韩国产成人高清视频| 国产欧美一区二区三区久久人妖| 亚洲高清免费观看高清完整版| 国产区精品视频| 成人激情视频在线观看| 日本国产欧美一区二区三区| 亚洲国产中文字幕久久网| 欧美视频免费在线观看| 国产视频一区在线| 57pao国产成人免费| 日韩精品视频观看| 国内精品模特av私拍在线观看| 精品视频—区二区三区免费| 国产第一区电影| 中文字幕一精品亚洲无线一区| 伊人久久五月天| 中文字幕视频一区二区在线有码| 久久精品国产亚洲| 97精品在线视频| 欧美午夜视频一区二区| 中文字幕精品影院| yellow中文字幕久久| 久久91亚洲精品中文字幕| 欧美黑人一区二区三区| 亚洲男人天堂手机在线| 国产精品美女主播在线观看纯欲| 成人午夜两性视频| 日韩极品精品视频免费观看| 久久久久久久久久久av| 97超碰国产精品女人人人爽| 国产一区二区三区在线观看网站| 国产精品在线看| 亚洲毛茸茸少妇高潮呻吟| 国产精品久久久久久久app| 中文字幕国产亚洲2019| 国产精品久久久久久搜索| 亚洲毛片在线观看| 欧美精品aaa| 国产精品久久在线观看|