java代碼將pdf 轉(zhuǎn)換成圖片加縮略圖 -3

寫的這些功能主要就是放在定時任務(wù)上,每分鐘查詢是否要有轉(zhuǎn)換的圖片那婉,有的換然后就轉(zhuǎn)換板甘,前端展示圖片就可以,大家可以瀏覽圖片详炬。不用在去下載哪些文件了盐类。

下面的是pdf轉(zhuǎn)圖片加縮略圖的

import java.awt.Graphics;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

import org.icepdf.core.exceptions.PDFException;

import org.icepdf.core.exceptions.PDFSecurityException;

import org.icepdf.core.pobjects.Document;

import org.icepdf.core.pobjects.PDimension;

import org.icepdf.core.pobjects.Page;

import org.icepdf.core.util.GraphicsRenderingHints;

/** * @author :liu.lu

* @version 創(chuàng)建時間:2018年4月19日 下午9:07:33

Description:?

*/

public class PdfToImages {

public static final String FILETYPE_JPG = "jpg";

public static final String SUFF_IMAGE = "." + FILETYPE_JPG;

public static void main(String[] args) {

try {

tranfer("D:\\temp\\品高工作流用戶指南.pdf",1);

} catch (PDFException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (PDFSecurityException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* 轉(zhuǎn)換pfd第一頁為jpg縮略圖大圖

*

* @param filepath

* @param zoom

* @throws PDFException

* @throws PDFSecurityException

* @throws IOException

*/

public static void tranfer1(String filepath, float zoom)

throws PDFException, PDFSecurityException, IOException {

// ICEpdf document class

Document document = null;

float rotation = 0f;

document = new Document();

document.setFile(filepath);

// 創(chuàng)建以pdf文件名為名稱的文件夾保存pdf縮略圖

File file = new File(filepath.substring(0, filepath.lastIndexOf(".")));

if (!file.exists() && !file.isDirectory()) {

System.out.println("http://不存在");

file.mkdir();

} else {

System.out.println("http://目錄存在");

}

String imagepath = "";

// 設(shè)置文件名

imagepath = jpgFilename(filepath, 0);

// 轉(zhuǎn)換首頁為jpg縮略圖

tranferPer(document, rotation, zoom, imagepath, 0);

}

/**

* 轉(zhuǎn)換pfd每一頁為jpg縮略圖大圖

*

* @param filepath

*? ? ? ? ? ? pfd文件路徑

* @param zoom

*? ? ? ? ? ? 縮略圖縮放比例

* @throws PDFException

* @throws PDFSecurityException

* @throws IOException

*/

public static void tranfer(String filepath, float zoom)

throws PDFException, PDFSecurityException, IOException {

// ICEpdf document class

Document document = null;

float rotation = 0f;

document = new Document();

document.setFile(filepath);

// 獲取pdf總頁數(shù)

int pages = document.getNumberOfPages();

if (pages > 0) {

// 創(chuàng)建以pdf文件名為名稱的文件夾保存pdf縮略圖

File file = new File(filepath.substring(0, filepath

.lastIndexOf(".")));

if (!file.exists() && !file.isDirectory()) {

System.out.println("http://不存在");

file.mkdir();

} else {

System.out.println("http://目錄存在");

}

String imagepath = "";

String smallimagepath = "";

// 將每一頁的pdf轉(zhuǎn)換為jpg縮略圖

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

// 設(shè)置文件名

imagepath = jpgFilename(filepath, i);

tranferPer(document, rotation, zoom, imagepath, i);

//由縮略圖生成指定寬高的jpg小圖

smallimagepath = imagepath.substring(0,imagepath.lastIndexOf("."))+"-small"+".jpg";

zoomImage(imagepath, smallimagepath, 300, 200);

}

}

}

/**

* 設(shè)置jpg文件名

*

* @param filepath

* @param index

* @return

*/

public static String jpgFilename(String filepath, int index) {

String jpgFilename = "";

String folder = "";

index++;

if (filepath != null && !filepath.equals("")) {

folder = filepath.substring(filepath.lastIndexOf("\\") + 1,

filepath.lastIndexOf("."));

jpgFilename = filepath.substring(0, filepath.lastIndexOf("."))

+ "\\" + folder + "-" + index + "." + FILETYPE_JPG;

}

return jpgFilename;

}

/**

* 轉(zhuǎn)換一頁pdf為jpg縮略圖大圖

*

* @param document

* @param rotation

* @param zoom

* @param imagepath

* @throws PDFException

* @throws PDFSecurityException

* @throws IOException

*/

public static void tranferPer(Document document, float rotation,

float zoom, String imagepath, int index) throws PDFException,

PDFSecurityException, IOException {

float scale = 1f;

Page page = document.getPageTree().getPage(index, Object.class);

page.init();

PDimension sz = page.getSize(Page.BOUNDARY_CROPBOX, rotation, scale);

int pageWidth = (int) sz.getWidth();

int pageHeight = (int) sz.getHeight();

BufferedImage image = new BufferedImage(pageWidth, pageHeight,

BufferedImage.TYPE_INT_RGB);

Graphics g = image.createGraphics();

page.paint(g, GraphicsRenderingHints.PRINT, Page.BOUNDARY_CROPBOX,

rotation, scale);

g.dispose();

// capture the page image to file

try {

System.out.println("轉(zhuǎn)換第 " + (index + 1) + " 頁");

File file = new File(imagepath);

ImageIO.write(image, "jpg", file);

} catch (Throwable e) {

e.printStackTrace();

}

image.flush();

//由縮略圖生成指定寬高的jpg小圖

String smallimagepath = imagepath.substring(0,imagepath.lastIndexOf("."))+"-small"+".jpg";

zoomImage(imagepath, smallimagepath, 88, 126);

}

/**

* 由縮略圖生成指定寬高的jpg小圖

* @param srcFileName

* @param tagFileName

* @param width

* @param height

*/

public static void zoomImage(String srcFileName, String tagFileName,

int width, int height) {

try {

BufferedImage bi = ImageIO.read(new File(srcFileName));

BufferedImage tag = new BufferedImage(width, height,

BufferedImage.TYPE_INT_RGB);

tag.getGraphics().drawImage(bi, 0, 0, width, height, null);

ImageIO.write(tag, "jpg", new File(tagFileName));

} catch (IOException e) {

e.printStackTrace();

}

}

}


測試結(jié)果



下面在給大家弄個 生成的圖片帶水印的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子在跳,更是在濱河造成了極大的恐慌枪萄,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件猫妙,死亡現(xiàn)場離奇詭異瓷翻,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)割坠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門逻悠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人韭脊,你說我怎么就攤上這事〉ヅ裕” “怎么了沪羔?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長象浑。 經(jīng)常有香客問我蔫饰,道長,這世上最難降的妖魔是什么愉豺? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任篓吁,我火速辦了婚禮,結(jié)果婚禮上蚪拦,老公的妹妹穿的比我還像新娘杖剪。我一直安慰自己,他們只是感情好驰贷,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布盛嘿。 她就那樣靜靜地躺著,像睡著了一般括袒。 火紅的嫁衣襯著肌膚如雪次兆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天锹锰,我揣著相機(jī)與錄音芥炭,去河邊找鬼。 笑死恃慧,一個胖子當(dāng)著我的面吹牛园蝠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播糕伐,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼砰琢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起陪汽,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤训唱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后挚冤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體况增,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年训挡,在試婚紗的時候發(fā)現(xiàn)自己被綠了澳骤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡澜薄,死狀恐怖为肮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肤京,我是刑警寧澤颊艳,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站忘分,受9級特大地震影響棋枕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜妒峦,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一重斑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肯骇,春花似錦窥浪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至若债,卻和暖如春符相,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蠢琳。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工啊终, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人傲须。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓蓝牲,卻偏偏與公主長得像,于是被迫代替她去往敵國和親泰讽。 傳聞我的和親對象是個殘疾皇子例衍,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

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