JAVA基于PDF box將PDF轉(zhuǎn)為圖片的實現(xiàn)方法
在一項目中用到,本身我是。NET的,團隊中有用到JAVA,故此我處理這個功能,記錄以下備用。
1.引用:fontbox-2.0.16.jar、pdfbox-app-2.0.16.jar 版本一定要正確,否則代碼會有問題。
main函數(shù):
package kevin.cn; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.imageio.ImageIO; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException; import org.apache.pdfbox.rendering.ImageType; import org.apache.pdfbox.rendering.PDFRenderer; import org.apache.pdfbox.tools.PDFBox; import kevin.cn.PdfUtil; @SuppressWarnings("unused") public class Test { //經(jīng)過測試,dpi為96,100,105,120,150,200中,105顯示效果較為清晰,體積穩(wěn)定,dpi越高圖片體積越大,一般電腦顯示分辨率為96 public static final float DEFAULT_DPI = 105; //默認轉(zhuǎn)換的圖片格式為jpg public static final String DEFAULT_FORMAT = "jpg"; public static void main(String[] args) throws Exception { pdfToImage("/media/kevin/FileData/JavaCode/pdfboxTest/企業(yè)信息化建設(shè)論文.pdf","/media/kevin/FileData/JavaCode/pdfboxTest/img/7.jpg",5); }
實現(xiàn)函數(shù):
/** * pdf轉(zhuǎn)圖片 * * @param pdfPath PDF路徑 * @imgPath img路徑 * @page_end 要轉(zhuǎn)換的頁碼,也可以定義開始頁碼和結(jié)束頁碼,我這里只需要一頁,根據(jù)需求自行添加 */ public static void pdfToImage(String pdfPath, String imgPath,int page_end) { try { //圖像合并使用參數(shù) // 總寬度 int width = 0; // 保存一張圖片中的RGB數(shù)據(jù) int[] singleImgRGB; int shiftHeight = 0; //保存每張圖片的像素值 BufferedImage imageResult = null; //利用PdfBox生成圖像 PDDocument pdDocument = PDDocument.load(new File(pdfPath)); PDFRenderer renderer = new PDFRenderer(pdDocument); //循環(huán)每個頁碼 for (int i = 0, len = pdDocument.getNumberOfPages(); i < len; i++) { if (i==page_end) { BufferedImage image = renderer.renderImageWithDPI(i, DEFAULT_DPI, ImageType.RGB); int imageHeight = image.getHeight(); int imageWidth = image.getWidth(); //計算高度和偏移量 //使用第一張圖片寬度; width = imageWidth; //保存每頁圖片的像素值 imageResult = new BufferedImage(width, imageHeight, BufferedImage.TYPE_INT_RGB); //這里有高度,可以將imageHeight*len,我這里值提取一頁所以不需要 singleImgRGB = image.getRGB(0, 0, width, imageHeight, null, 0, width); // 寫入流中 imageResult.setRGB(0, shiftHeight, width, imageHeight, singleImgRGB, 0, width); }else if(i>page_end) { continue; } } pdDocument.close(); // 寫圖片 ImageIO.write(imageResult, DEFAULT_FORMAT, new File(imgPath)); } catch (Exception e) { e.printStackTrace(); } //OVER }
總結(jié)
以上所述是小編給大家介紹的JAVA基于PDF box將PDF轉(zhuǎn)為圖片的實現(xiàn)方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
Spring攔截器實現(xiàn)鑒權(quán)的示例代碼
本文主要介紹了Spring攔截器實現(xiàn)鑒權(quán)的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-07-07java實現(xiàn)批量導入.csv文件到mysql數(shù)據(jù)庫
這篇文章主要為大家詳細介紹了java實現(xiàn)批量導入.csv文件到mysql數(shù)據(jù)庫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08java中List數(shù)組用逗號分隔開轉(zhuǎn)成字符串2種方法
在我們?nèi)粘i_發(fā)中,在前后端交互的時候會遇到多個id或其他字段存放到一個字段中,這時我們會遇到一個List(集合)---->String(單個字段),這篇文章主要給大家介紹了關(guān)于java中List數(shù)組用逗號分隔開轉(zhuǎn)成字符串的2種方法,需要的朋友可以參考下2023-10-10Java+Nginx實現(xiàn)POP、IMAP、SMTP郵箱代理服務(wù)
本篇文章的內(nèi)容是介紹Java+Nginx如何實現(xiàn)POP、IMAP、SMTP郵箱代理服務(wù),步驟詳細,思路清新,需要的朋友可以參考下2015-07-07SpringBoot+Vue實現(xiàn)EasyPOI導入導出的方法詳解
項目開發(fā)過程中,很大的需求都有 導入導出功能。本文將利用SpringBoot+Vue實現(xiàn)EasyPOI導入導出功能,感興趣的可以了解一下2022-08-08Mybatis中3種關(guān)聯(lián)關(guān)系的實現(xiàn)方法示例
這篇文章主要給大家介紹了關(guān)于Mybatis中3種關(guān)聯(lián)關(guān)系的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用Mybatis具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-11-11