當前位置:首頁 » 編程語言 » javapdftojpg

javapdftojpg

發布時間: 2022-10-24 11:22:07

javaweb pdf流轉jpg流怎麼操作

package pdf;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import javax.swing.SwingUtilities;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.sun.pdfview.PDFFile;
import com.sun.pdfview.PDFPage;
public class PdfToJpg {
public static void setup() throws IOException {
// 載入一個pdf從一個位元組緩沖區
File file = new File("D:\\yangliu\\test.pdf");
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);
System.out.println("頁數:" + pdffile.getNumPages());
String getPdfFilePath = System.getProperty("user.dir") + "\\pdfPicFile";
System.out.println("getPdfFilePath is :" + getPdfFilePath);

for (int i = 1; i < pdffile.getNumPages(); i++) {
// 畫第一頁到一個圖像
PDFPage page = pdffile.getPage(i);
// 獲得寬度和高度的文件在默認的變焦
Rectangle rect = new Rectangle(0, 0, (int) page.getBBox()
.getWidth(), (int) page.getBBox().getHeight());
// 生成圖像
Image img = page.getImage(rect.width, rect.height, rect, null,
true, true);
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(getPdfFilePath + "\\"
+ i + ".jpg");
System.out.println("成功保存圖片到:"+getPdfFilePath+"\\"+i+".jpg");

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(tag);
param.setQuality(1f, false); //1f是提高生成的圖片質量
encoder.setJPEGEncodeParam(param);
encoder.encode(tag); // JPEG編碼
out.close();
}
}

public static void main(final String[] args){
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
PdfToJpg.setup();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
}

② Java怎麼把PDF轉化成圖片

表示不會使用Java將pdf轉換成圖片,但是要將pdf轉換成圖片可以使用專業的pdf轉換工具啊。

大致的轉換方法如下:

打開並運行迅捷pdf轉換器,選擇PDF轉成其他文件中的「轉成圖片」選項;

③ java中 如何將存放在資料庫中的pdf、doc、jpg等文件讀出來(二進制形式存放在數據)

在資料庫中存放這些個二進制文件的欄位是BLOB,oracle和MysqL裡面都是
java中讀取 BLOB數據:
首先做查詢,拿到查詢結果ResultSet rs = XXXX (和普通數據查詢一樣)
然後:Blob blob = rs.getBlob("欄位名"); 拿到你的Blob ,
得到文件的二進制流:InputStream binaryStream= blob.getBinaryStream();,
你的文件數據就在這個流當中,你想怎麼用就怎麼取,比如,讀出來存到一個byte[]中,以便序列化傳輸,讀出來構造成一個File直接存放到本地等等。

舉個例子吧:從這個binaryStream中讀取數據到byte[]的方法,
////////---------------------
/**
* 從binaryStream中讀取數據到byte[]的方法
* @param in 即binaryStream
* @return
* @throws Exception
*/
public static byte[] readStreamToByteArray(InputStream in) throws Exception{
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while((len = in.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
outputStream.close();
in.close();
return outputStream.toByteArray();
}

//

④ java pdf轉圖片問題

搜索添加spire.pdf.jar文件為依賴,pdf轉圖片代碼如下:

  1. import java.awt.image.BufferedImage;

  2. import java.io.File;

  3. import java.io.IOException;

  4. import com.spire.pdf.PdfDocument;

  5. import javax.imageio.ImageIO;


  6. public class toImage {


  7. public static void main(String[] args) throws IOException {

  8. //載入PDF文件

  9. PdfDocument doc = new PdfDocument();

  10. doc.loadFromFile("Sample.pdf");

  11. //保存PDF的每一頁到圖片

  12. BufferedImage image;

  13. for (int i = 0; i < doc.getPages().getCount(); i++) {

  14. image = doc.saveAsImage(i);

  15. File file = new File( String.format("ToImage-img-%d.png", i));

  16. ImageIO.write(image, "PNG", file);

  17. }

  18. doc.close();

  19. }

  20. }

⑤ JAVA怎麼將PDF的base64轉換成jpg的base64

package com.aiait.base.util;


import org.apache.pdfbox.pdmodel.PDDocument;

import org.apache.pdfbox.rendering.ImageType;

import org.apache.pdfbox.rendering.PDFRenderer;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;


import com.aiait.base.service.impl.base.SearchServiceImpl;


import org.apache.pdfbox.*;


import java.awt.image.BufferedImage;

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.net.URL;

import java.text.DecimalFormat;

import java.util.Date;


import javax.imageio.ImageIO;


import org.apache.commons.lang3.StringUtils;


import sun.misc.BASE64Decoder;

import sun.misc.BASE64Encoder;


public class PDFUtil {

// logger

private static final Logger lOGGER = LoggerFactory.getLogger(PDFUtil.class);


public static void main(String[] args) {

// pdfTojpg("C://Test//eClaimPDF//1//Others.pdf","C://Test//eClaimPDF//WrittenConfirmation.jpg");

Date timeDiffE = null;

Date timeDiffL = null;

timeDiffE = new Date();

base64PdfToJpg(pdfBase64);

timeDiffL = new Date();

lOGGER.info("base64PdfToJpg use time: " + getDiffTime(timeDiffL, timeDiffE) + "s");

}

private static String base64PdfToJpg(String base64Pdf) {

String jpg_base64 = null;

int pdfdpi = 400;

BASE64Decoder decoder = new BASE64Decoder();

byte[] pdf_bytes = null;

try {

pdf_bytes = decoder.decodeBuffer(base64Pdf);

} catch (IOException e1) {

e1.printStackTrace();

}


try (final PDDocument document = PDDocument.load(pdf_bytes)) {

int size = document.getNumberOfPages();

/*圖像合並使用參數*/

// 定義寬度

int width = 0;

// 保存一張圖片中的RGB數據

int[] singleImgRGB;

// 定義高度,後面用於疊加

int shiftHeight = 0;

//保存每張圖片的像素值

BufferedImage imageResult = null;

// 利用PdfBox生成圖像

PDDocument pdDocument = document;

PDFRenderer renderer = new PDFRenderer(pdDocument);

/*根據總頁數, 按照50頁生成一張長圖片的邏輯, 進行拆分*/

// 每50頁轉成1張圖片

int pageLength = size; //有多少轉多少

// 總計循環的次數

int totalCount = pdDocument.getNumberOfPages() / pageLength + 1;

for (int m = 0; m < totalCount; m++) {

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

int pageIndex = i + (m * pageLength);

if (pageIndex == pdDocument.getNumberOfPages()) {

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

break;

}

// 96為圖片的dpi,dpi越大,則圖片越清晰,圖片越大,轉換耗費的時間也越多

BufferedImage image = renderer.renderImageWithDPI(pageIndex, 106, ImageType.RGB);

int imageHeight = image.getHeight();

int imageWidth = image.getWidth();

if (i == 0) {

//計算高度和偏移量

//使用第一張圖片寬度;

width = imageWidth;

// 保存每頁圖片的像素值

// 加個判斷:如果m次循環後所剩的圖片總數小於pageLength,則圖片高度按剩餘的張數繪制,否則會出現長圖片下面全是黑色的情況

if ((pdDocument.getNumberOfPages() - m * pageLength) < pageLength) {

imageResult = new BufferedImage(width, imageHeight * (pdDocument.getNumberOfPages() - m * pageLength), BufferedImage.TYPE_INT_RGB);

} else {

imageResult = new BufferedImage(width, imageHeight * pageLength, BufferedImage.TYPE_INT_RGB);

}

} else {

// 將高度不斷累加

shiftHeight += imageHeight;

}

singleImgRGB = image.getRGB(0, 0, width, imageHeight, null, 0, width);

imageResult.setRGB(0, shiftHeight, width, imageHeight, singleImgRGB, 0, width);

}

// System.out.println("m = " + m);

File outFile = new File("C://Test//eClaimPDF//WrittenConfirmation.png");

System.out.println(outFile.getName());

// 寫圖片

ImageIO.write(imageResult, "png", outFile);

// 這個很重要,下面會有說明

shiftHeight = 0;

}

pdDocument.close();


ByteArrayOutputStream baos = new ByteArrayOutputStream();//io流

ImageIO.write(imageResult, "png", baos);//寫入流中

byte[] jpg_Bytes = baos.toByteArray();//轉換成位元組

BASE64Encoder encoder = new BASE64Encoder();

jpg_base64 = encoder.encodeBuffer(jpg_Bytes).trim();//轉換成base64串

jpg_base64 = jpg_base64.replaceAll(" ", "").replaceAll(" ", "");//刪除

// System.out.println("值為:"+"data:image/jpg;base64,"+jpg_base64);

} catch (Exception e) {

e.printStackTrace();

}

return "data:image/jpg;base64,"+jpg_base64;

}

// private static String base64PdfToJpg(String base64Pdf) {

// String jpg_base64 = null;

// int pdfdpi = 400;

//

// BASE64Decoder decoder = new BASE64Decoder();

// byte[] pdf_bytes = null;

// try {

// pdf_bytes = decoder.decodeBuffer(base64Pdf);

// } catch (IOException e1) {

// e1.printStackTrace();

// }

//

// try (final PDDocument document = PDDocument.load(pdf_bytes)) {

// int size = document.getNumberOfPages();

// for (int i = 0; i < size; i++) {

// BufferedImage image = new PDFRenderer(document).renderImageWithDPI(i, pdfdpi, ImageType.RGB);

// BufferedImage image = new PDFRenderer(document).

//

// ByteArrayOutputStream baos = new ByteArrayOutputStream();//io流

// ImageIO.write(image, "jpg", baos);//寫入流中

// byte[] jpg_Bytes = baos.toByteArray();//轉換成位元組

// BASE64Encoder encoder = new BASE64Encoder();

// jpg_base64 = encoder.encodeBuffer(jpg_Bytes).trim();//轉換成base64串

// jpg_base64 = jpg_base64.replaceAll(" ", "").replaceAll(" ", "");//刪除

//

// System.out.println("值為:"+"data:image/jpg;base64,"+jpg_base64);

//

// }

// } catch (Exception e) {

// e.printStackTrace();

// }

// return "data:image/jpg;base64,"+jpg_base64;

// }


private static void pdfTojpg(String pdfFilePath, String jpgFilePath) {

File pdfFile = new File(pdfFilePath);

int idx = jpgFilePath.lastIndexOf('.');

String jpgprefix = StringUtils.substring(jpgFilePath, 0, idx);

int pdfdpi = 400;

BASE64Decoder decoder = new BASE64Decoder();

byte[] bytes = null;

try {

bytes = decoder.decodeBuffer(pdfBase64);

} catch (IOException e1) {

e1.printStackTrace();

}


// try (final PDDocument document = PDDocument.load(pdfFile, "")) {

try (final PDDocument document = PDDocument.load(bytes)) {

int size = document.getNumberOfPages();

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

BufferedImage image = new PDFRenderer(document).renderImageWithDPI(i, pdfdpi, ImageType.RGB);

/*

* ByteArrayOutputStream baos = new ByteArrayOutputStream();//io流

* ImageIO.write(image, "jpg", baos);//寫入流中 byte[] imgBytes =

* baos.toByteArray();//轉換成位元組 BASE64Encoder encoder = new BASE64Encoder();

* String png_base64 = encoder.encodeBuffer(imgBytes).trim();//轉換成base64串

* png_base64 = png_base64.replaceAll(" ", "").replaceAll(" ", "");//刪除

*

* System.out.println("值為:"+"data:image/jpg;base64,"+png_base64);

*/

File jpgFile = new File(jpgprefix + "_" + i + ".jpg");

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

}

} catch (Exception e) {

e.printStackTrace();

}


}

private static Double getDiffTime(Date lateTime, Date earlyTime) {

DecimalFormat df=new DecimalFormat("0.00");//設置保留位數

return Double.valueOf(df.format((double)(lateTime.getTime() - earlyTime.getTime()) / 1000));

}


public static String pdfBase64 = "***" //from web網頁鏈接, upload a PDF to get the base64 string (Base64 - Online Base64 decoder and encoder)

}

⑥ java 將pdf轉成JPG。。

BufferedImage tag = new BufferedImage(rect.width, rect.height,
BufferedImage.TYPE_INT_RGB);
這句是讀入圖片的流,傳入的參數是圖片本身的長,高,RGB色位。

tag.getGraphics().drawImage(img, 0, 0, rect.width, rect.height,
null);
這句是輸出圖片的方法,幾個參數分別是,圖片對象,0,0,圖片的長,高,null。

所以應該是改下句的這兩個參數,你把rect.width和rect.height的數值放大兩倍看看。
應該是這里。

⑦ 用java實現pdf轉jpg圖片的全代碼,我這里附上參考代碼。

學JAVA就到廣州瘋狂JAVA來學習 李剛授課 我是不能。。。

⑧ 用java PDFRenderer.jar做PDF轉JPG出錯Unsupported color conversion request

附代碼或者試試pdfbox,或者icepdf

熱點內容
如何搜索dns默認伺服器 發布:2025-01-04 06:28:49 瀏覽:357
壓縮干糧最早 發布:2025-01-04 06:20:08 瀏覽:755
飢荒wegame為什麼找不到伺服器 發布:2025-01-04 06:15:34 瀏覽:992
歡樂鬥地主的密碼在哪裡顯示 發布:2025-01-04 05:58:48 瀏覽:911
比亞迪唐dmi哪個配置值得買 發布:2025-01-04 05:50:17 瀏覽:170
內存儲器的功能 發布:2025-01-04 05:50:11 瀏覽:680
sqlcountsum 發布:2025-01-04 05:49:24 瀏覽:234
linux怎麼改ip 發布:2025-01-04 05:39:32 瀏覽:478
c語言mallocfree 發布:2025-01-04 05:38:49 瀏覽:268
台式電腦在哪裡設置密碼鎖 發布:2025-01-04 05:36:27 瀏覽:632