java代碼將pdf轉(zhuǎn)成圖片-2

廢話不多說直接上代碼尘喝。不管多少頁(yè)的pdf,都能給你轉(zhuǎn)成圖片倦踢,速度非乘椭停快,主要是穩(wěn)定辱挥,比linux(下面有粘圖的 都被屏蔽掉了犁嗅。什么鬼

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import java.util.UUID;

import javax.imageio.ImageIO;

import org.apache.pdfbox.pdmodel.PDDocument;

import org.apache.pdfbox.rendering.PDFRenderer;

import com.lowagie.text.pdf.PdfReader;

/**

*@author :liu

* @version 創(chuàng)建時(shí)間:2018年4月19日 下午9:36:51

*? ? ? ? ? Description:

*/

public class PDF2IMAGE {

// 獲取到 pdf 文件路徑

// 獲取到圖片存放路徑

// study-1.jpg

public static void main(String[] args) {

pdf2Image("D:/temp/a222.pdf", "D:/temp/picture", 150);

}

/***

* PDF文件轉(zhuǎn)PNG圖片,全部頁(yè)數(shù)

*

* @param PdfFilePath

*? ? ? ? ? ? pdf完整路徑

* @param imgFilePath

*? ? ? ? ? ? 圖片存放的文件夾

* @param dpi

*? ? ? ? ? ? dpi越大轉(zhuǎn)換后越清晰晤碘,相對(duì)轉(zhuǎn)換速度越慢

* @return

* list 獲取到pdf 的文件路徑 /dsd/d.pdf? 然后拼上絕對(duì)路徑

*/

public static Integer pdf2Image(String PdfFilePath, String dstImgFolder,

int dpi) {

UUID uuid = UUID.randomUUID();

String uuId = uuid.toString();

System.out.println(uuId);

File file = new File(PdfFilePath);

@SuppressWarnings("resource")

PDDocument pdDocument = new PDDocument();

try {

//String imagePDFName = file.getName().substring(0, dot); // 獲取圖片文件名

String imgFolderPath = null;

if (dstImgFolder.equals("")) {

imgFolderPath = dstImgFolder + File.separator + uuId;// 獲取圖片存放的文件夾路徑

} else {

imgFolderPath = dstImgFolder + File.separator + uuId;

}

if (createDirectory(imgFolderPath)) {

pdDocument = PDDocument.load(file);

PDFRenderer renderer = new PDFRenderer(pdDocument);

/* dpi越大轉(zhuǎn)換后越清晰褂微,相對(duì)轉(zhuǎn)換速度越慢 */

PdfReader reader = new PdfReader(PdfFilePath);

int pages = reader.getNumberOfPages();

System.out.println("pdf總共多少頁(yè)-----" + pages);

StringBuffer imgFilePath = null;

for (int i = 0; i < pages; i++) {

String imgFilePathPrefix = imgFolderPath + File.separator

+ "study";

System.out.println("imgFilePathPrefix====="+ imgFilePathPrefix);

imgFilePath = new StringBuffer();

imgFilePath.append(imgFilePathPrefix);

imgFilePath.append("-");

imgFilePath.append(String.valueOf(i));

imgFilePath.append(".jpg");

File dstFile = new File(imgFilePath.toString());

BufferedImage image = renderer.renderImageWithDPI(i, dpi);

System.out.println(dstFile);

ImageIO.write(image, "png", dstFile);

}

System.out.println("PDF文檔轉(zhuǎn)PNG圖片成功!");

System.out.println("做保存操作保存數(shù)據(jù)庫(kù)-----");

return 1;

} else {

System.out.println("PDF文檔轉(zhuǎn)PNG圖片失斣耙:" + "創(chuàng)建" + imgFolderPath

+ "失敗");

return -1;

}

} catch (IOException e) {

e.printStackTrace();

return -1;

}

}

private static boolean createDirectory(String folder) {

File dir = new File(folder);

if (dir.exists()) {

return true;

} else {

return dir.mkdirs();

}

}

//刪除文件夾

//param folderPath 文件夾完整絕對(duì)路徑

? ? public static void delFolder(String folderPath) {

? ? try {

? ? ? ? delAllFile(folderPath); //刪除完里面所有內(nèi)容

? ? ? ? String filePath = folderPath;

? ? ? ? filePath = filePath.toString();

? ? ? ? java.io.File myFilePath = new java.io.File(filePath);

? ? ? ? myFilePath.delete(); //刪除空文件夾

? ? } catch (Exception e) {

? ? ? e.printStackTrace();

? ? }

}

//刪除指定文件夾下所有文件

//param path 文件夾完整絕對(duì)路徑

? public static boolean delAllFile(String path) {

? ? ? boolean flag = false;

? ? ? File file = new File(path);

? ? ? if (!file.exists()) {

? ? ? ? return flag;

? ? ? }

? ? ? if (!file.isDirectory()) {

? ? ? ? return flag;

? ? ? }

String[] tempList = file.list();

? ? ? File temp = null;

? ? ? for (int i = 0; i < tempList.length; i++) {

? ? ? ? ? if (path.endsWith(File.separator)) {

? ? ? ? ? ? temp = new File(path + tempList[i]);

? ? ? ? ? } else {

? ? ? ? ? ? ? temp = new File(path + File.separator + tempList[i]);

? ? ? ? ? }

? ? ? ? ? if (temp.isFile()) {

? ? ? ? ? ? temp.delete();

? ? ? ? ? }

? ? ? ? ? if (temp.isDirectory()) {

? ? ? ? ? ? delAllFile(path + "/" + tempList[i]);//先刪除文件夾里面的文件

? ? ? ? ? ? delFolder(path + "/" + tempList[i]);//再刪除空文件夾

? ? ? ? ? ? flag = true;

? ? ? ? ? }

? ? ? }

? ? ? return flag;

? ? }

}
測(cè)試結(jié)果



148張轉(zhuǎn)換要49秒蕊梧。你可以調(diào)整一下分辨率,低的話腮介,速度會(huì)更快


下面在弄個(gè)生成圖片縮略圖的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肥矢,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子叠洗,更是在濱河造成了極大的恐慌甘改,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灭抑,死亡現(xiàn)場(chǎng)離奇詭異十艾,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)腾节,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門忘嫉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人案腺,你說我怎么就攤上這事庆冕。” “怎么了劈榨?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵访递,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我同辣,道長(zhǎng)拷姿,這世上最難降的妖魔是什么惭载? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮响巢,結(jié)果婚禮上描滔,老公的妹妹穿的比我還像新娘。我一直安慰自己踪古,他們只是感情好含长,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著灾炭,像睡著了一般茎芋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蜈出,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天田弥,我揣著相機(jī)與錄音,去河邊找鬼铡原。 笑死偷厦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的燕刻。 我是一名探鬼主播只泼,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼卵洗!你這毒婦竟也來了请唱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤过蹂,失蹤者是張志新(化名)和其女友劉穎十绑,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酷勺,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡本橙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了脆诉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甚亭。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖击胜,靈堂內(nèi)的尸體忽然破棺而出亏狰,到底是詐尸還是另有隱情,我是刑警寧澤潜的,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布骚揍,位于F島的核電站,受9級(jí)特大地震影響啰挪,放射性物質(zhì)發(fā)生泄漏信不。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一亡呵、第九天 我趴在偏房一處隱蔽的房頂上張望抽活。 院中可真熱鬧,春花似錦锰什、人聲如沸下硕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽梭姓。三九已至,卻和暖如春嫩码,著一層夾襖步出監(jiān)牢的瞬間誉尖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工铸题, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留铡恕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓丢间,卻偏偏與公主長(zhǎng)得像探熔,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子烘挫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理诀艰,服務(wù)發(fā)現(xiàn),斷路器饮六,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • 一其垄、流的概念和作用。 流是一種有順序的喜滨,有起點(diǎn)和終點(diǎn)的字節(jié)集合捉捅,是對(duì)數(shù)據(jù)傳輸?shù)目偝苫虺橄蟆<磾?shù)據(jù)在兩設(shè)備之間的傳輸...
    布魯斯不吐絲閱讀 10,039評(píng)論 2 95
  • 【兩面鏡子】20180531虽风,D008 1棒口、磨耳朵:鵝媽媽jack and jill ,Humpty jumpty...
    我是一只快樂的豬閱讀 177評(píng)論 0 0
  • 為何還要找石頭那
    010ed0d5a362閱讀 99評(píng)論 0 0
  • 文件與文件路徑讀寫文件用shelve模塊保存變量 1 python 讀寫文件 1.1 文件與文件路徑 window...
    shaoxiangjun閱讀 228評(píng)論 1 0