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

本文介绍了如何使用Apache PDFBox库将PDF文件转换为图片。通过Java代码示例展示了如何读取PDF文件,遍历每一页并将其转换为JPEG或PNG格式的图片,最后保存到指定目录。
摘要由CSDN通过智能技术生成

使用的工具包:

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
    评论
要将 PDF 文件转换成高清图片,可以使用 Java 库 Apache PDFBox。以下是一个简单的示例代码: ```java import java.io.File; import java.io.IOException; import java.util.List; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.rendering.PDFRenderer; import org.apache.pdfbox.rendering.RenderDestination; import org.apache.pdfbox.rendering.RenderRequest; import org.apache.pdfbox.rendering.RenderResult; import org.apache.pdfbox.rendering.Renderer; import org.apache.pdfbox.rendering.image.BufferedImageRenderer; import org.apache.pdfbox.rendering.image.BufferedImageWriter; import javax.imageio.ImageIO; public class PDFToImageConverter { public static void main(String[] args) throws IOException { String sourcePdf = "path/to/source.pdf"; String destFolder = "path/to/destination/folder"; convertPDFToImages(sourcePdf, destFolder); } public static void convertPDFToImages(String sourcePdf, String destFolder) throws IOException { File file = new File(sourcePdf); PDDocument document = PDDocument.load(file); PDFRenderer pdfRenderer = new PDFRenderer(document); int pageCount = document.getNumberOfPages(); for (int i = 0; i < pageCount; i++) { BufferedImage image = pdfRenderer.renderImageWithDPI(i, 300); File output = new File(destFolder + "/image" + (i + 1) + ".png"); ImageIO.write(image, "png", output); } document.close(); } } ``` 这段代码将 PDF 文件转换成多个 PNG 格式的图片,存储在指定的文件夹中。其中,`pdfRenderer.renderImageWithDPI(i, 300)` 方法可以指定图片的 DPI(每英寸点数),这里设置为 300dpi,可以根据需要进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值