1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 使用pdfbox-2.0.1.jar将pdf转换成图片 并且可自定义图片大小

使用pdfbox-2.0.1.jar将pdf转换成图片 并且可自定义图片大小

时间:2023-03-17 14:16:37

相关推荐

使用pdfbox-2.0.1.jar将pdf转换成图片 并且可自定义图片大小

之前领导提出来一个需求说是将pdf转换成图片,所以找了一个包PDFBOX,下载最新包网上找的都是老的版本,新的包方法不太适应,找到源码demo看了一下记录下来以便以后再用。

package com.learn.pdf;

import java.awt.Graphics2D;

import java.awt.RenderingHints;

import java.awt.geom.AffineTransform;

import java.awt.image.BufferedImage;

import java.awt.image.ColorModel;

import java.awt.image.WritableRaster;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

import org.apache.pdfbox.pdmodel.PDDocument;

import org.apache.pdfbox.rendering.PDFRenderer;

public class PdfChangeImg {

public static void main(String[] args) {

//将pdf装图片 并且自定义图片得格式大小

File file = new File("E:\\qiyuesuoTraining\\com.pdf");

try {

PDDocument doc = PDDocument.load(file);

PDFRenderer renderer = new PDFRenderer(doc);

int pageCount = doc.getNumberOfPages();

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

BufferedImage image = renderer.renderImageWithDPI(i, 96); // Windows native DPI

BufferedImage srcImage = resize(image, 240, 240);//产生缩略图

ImageIO.write(srcImage, "PNG", new File("E:\\qiyuesuoTraining\\com.png"));

}

} catch (IOException e) {

e.printStackTrace();

}

}

private static BufferedImage resize(BufferedImage source, int targetW, int targetH) {

int type=source.getType();

BufferedImage target=null;

double sx=(double)targetW/source.getWidth();

double sy=(double)targetH/source.getHeight();

if(sx>sy){

sx=sy;

targetW=(int)(sx*source.getWidth());

}else{

sy=sx;

targetH=(int)(sy*source.getHeight());

}

if(type==BufferedImage.TYPE_CUSTOM){

ColorModel cm=source.getColorModel();

WritableRaster raster=cm.createCompatibleWritableRaster(targetW, targetH);

boolean alphaPremultiplied=cm.isAlphaPremultiplied();

target=new BufferedImage(cm,raster,alphaPremultiplied,null);

}else{

target=new BufferedImage(targetW, targetH,type);

}

Graphics2D g=target.createGraphics();

g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);

g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy));

g.dispose();

return target;

}

}

其中缩略图使用得方法参照了/hehe9737/article/details/7656308得来。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。