java實現(xiàn)pdf文件截圖的方法【附PDFRenderer.jar下載】
本文實例講述了java實現(xiàn)pdf文件截圖的方法。分享給大家供大家參考,具體如下:
最近做的一個網(wǎng)站中,有個需求是上傳pdf文件,顯示pdf的封頁,點擊封頁之后進(jìn)行在線閱讀,這里使用的是PDFRender對pdf進(jìn)行截圖。
public static boolean createScreenShoot(String source, String target) {
File file = new File(source);
if (!file.exists()) {
System.err.println("路徑[" + source + "]對應(yīng)的pdf文件不存在!");
return false;
}
try{
RandomAccessFile raf = new RandomAccessFile(file, "r");
FileChannel channel = raf.getChannel();
ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
PDFFile pdffile = new PDFFile(buf);
int num = pdffile.getNumPages();
for(int i = 1; i < num; i++){
PDFPage page = pdffile.getPage(1);
// get the width and height for the doc at the default zoom
Rectangle rect = new Rectangle(0, 0, (int) page.getBBox()
.getWidth(), (int) page.getBBox().getHeight());
// generate the image
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+i+"jpg");
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(tag); // JPEG編碼
out.close();
}
return true;
}catch(Exception e){
e.printStackTrace();
return true;
}
另外如果需要在線顯示pdf的話,需要設(shè)置響應(yīng)頭
response.setContentType("application/pdf");
附:pdfRender.jar點擊此處本站下載。
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java圖片操作技巧匯總》、《java日期與時間操作技巧匯總》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》及《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》。
希望本文所述對大家java程序設(shè)計有所幫助。
相關(guān)文章
解決feignClient調(diào)用時獲取返回對象類型匹配的問題
這篇文章主要介紹了解決feignClient調(diào)用時獲取返回對象類型匹配的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
Spring Data JPA踩坑記錄(@id @GeneratedValue)
這篇文章主要介紹了Spring Data JPA踩坑記錄(@id @GeneratedValue),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
SpringBoot調(diào)用service層的三種方法
在Spring?Boot中,我們可以通過注入Service層對象來調(diào)用Service層的方法,Service層是業(yè)務(wù)邏輯的處理層,它通常包含了對數(shù)據(jù)的增刪改查操作,本文給大家介紹了SpringBoot調(diào)用service層的三種方法,需要的朋友可以參考下2024-05-05
spring boot整合quartz實現(xiàn)多個定時任務(wù)的方法
這篇文章主要介紹了spring boot整合quartz實現(xiàn)多個定時任務(wù)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01
解決CentOS7中運行jar包報錯:xxx(Permission?denied)
在實際工作我們經(jīng)常會在linux上運行Spring boot編寫的微服務(wù)程序,下面這篇文章主要給大家介紹了關(guān)于如何解決CentOS7中運行jar包報錯:xxx(Permission?denied)的相關(guān)資料,需要的朋友可以參考下2024-02-02
利用Java反射機制實現(xiàn)對象相同字段的復(fù)制操作
這篇文章主要介紹了利用Java反射機制實現(xiàn)對象相同字段的復(fù)制操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08

