java pdf转图片_JAVA使用pdfbox将pdf转换成图片

使用的工具包:

pdfbox-1.8

fontbox-1.8

maven中导入:

org.apache.pdfbox

pdfbox

1.8.10

注意: 对要求过高项目不建议使用(转化过程中出现字符重叠现象).

下面看代码

package com.yqrt.core.pdf2img;

import java.awt.image.BufferedImage;

import java.io.BufferedInputStream;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.Iterator;

import java.util.List;

import javax.imageio.IIOImage;

import javax.imageio.ImageIO;

import javax.imageio.ImageWriter;

import javax.imageio.stream.ImageOutputStream;

import org.apache.pdfbox.exceptions.COSVisitorException;

import org.apache.pdfbox.pdfparser.PDFParser;

import org.apache.pdfbox.pdmodel.PDDocument;

import org.apache.pdfbox.pdmodel.PDPage;

/**

* Hello world!

*

*/

public class App

{

public final static String IMG_TYPE_JPG = "jpg";

public final static String IMG_TYPE_PNG = "png";

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

{

App app = new App();

app.pdf2img("D:\\api.pdf", "D:",IMG_TYPE_PNG);

// PDDocument pdDocument = app.pdfInfo("D:\\api.pdf");

}

/**

*

* @param pdfPath pdf文件的路径

* @param savePath 图片保存的地址

* @param imgType 图片保存方式

*/

public void pdf2img(String pdfPath,String savePath,String imgType){

String fileName = pdfPath.substring(pdfPath.lastIndexOf("\\")+1, pdfPath.length());

fileName = fileName.substring(0,fileName.lastIndexOf("."));

InputStream is = null;

PDDocument pdDocument = null;

try {

is = new BufferedInputStream(new FileInputStream(pdfPath));

PDFParser parser = new PDFParser(is);

parser.parse();

pdDocument = parser.getPDDocument();

Listpages = pdDocument.getDocumentCatalog().getAllPages();

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

String saveFileName = savePath+"\\"+fileName+i+"."+imgType;

PDPage page = pages.get(i);

pdfPage2Img(page,saveFileName,imgType);

}

} catch (Exception e) {

e.printStackTrace();

}finally{

if(pdDocument != null){

try {

pdDocument.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

/**

* pdf页转换成图片

* @param page

* @param saveFileName

* @throws IOException

*/

public void pdfPage2Img(PDPage page,String saveFileName,String imgType) throws IOException{

BufferedImage img_temp = page.convertToImage();

Iteratorit = ImageIO.getImageWritersBySuffix(imgType);

ImageWriter writer = (ImageWriter) it.next();

ImageOutputStream imageout = ImageIO.createImageOutputStream(new FileOutputStream(saveFileName));

writer.setOutput(imageout);

writer.write(new IIOImage(img_temp, null, null));

}

public PDDocument pdfInfo(String filePath) throws IOException{

InputStream is = new BufferedInputStream(new FileInputStream(filePath));

PDFParser parser = new PDFParser(is);

parser.parse();

PDDocument pdDocument = parser.getPDDocument();

System.out.println("pageNum:"+pdDocument.getNumberOfPages());

return pdDocument;

}

public void createPdf() throws COSVisitorException, IOException{

PDDocument document = new PDDocument();

PDPage blankPage = new PDPage();

document.addPage(blankPage);

document.save("D:\\test.pdf");

document.close();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值