import java.awt.image.BufferedImage;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import org.icepdf.core.pobjects.Document;
import org.icepdf.core.pobjects.Page;
import org.icepdf.core.util.GraphicsRenderingHints;
import com.sun.media.jai.codec.ImageCodec;
import com.sun.media.jai.codec.ImageEncoder;
import com.sun.media.jai.codec.TIFFEncodeParam;
public class CreateImgByPDF {
// 根据现成的pdf文件转换图片
public static void main(String[] args) throws Exception {
img();
}
public static void img() throws Exception {
// 定义Document,用于转换图片
Document document = new Document();
// 找到路径
document.setFile("E:\\ceshi\\macth.pdf");
// 用来保存当前页码的页码
Map<String, Integer> map = new HashMap<String, Integer>();
float rotation = 0f;
// 获取这个pdf的页码一共多少页
int maxPages = document.getNumberOfPages();
// 循环pdf每一页并转换
for (int i = 0; i < document.getNumberOfPages(); i++) {
BufferedImage image = (BufferedImage) document.getPageImage(i,
GraphicsRenderingHints.SCREEN, Page.BOUNDARY_CROPBOX,
rotation, (float) 3.0);
BufferedImage bufferedImage = new BufferedImage(
image.getWidth(null), image.getHeight(null),
// BufferedImage.TYPE_INT_RGB : 表示一个图像,该图像具有整数像素的 8 位 RGB 颜色
BufferedImage.TYPE_INT_RGB);
bufferedImage.getGraphics().drawImage(image, 0, 0, null);
//图片的输出全路径
OutputStream os = new FileOutputStream("E:\\ceshi\\1\\"+i+".tif");
TIFFEncodeParam param = new TIFFEncodeParam();
// 设置压缩方式
param.setCompression(TIFFEncodeParam.COMPRESSION_DEFLATE);
//转换成指定的格式。
ImageEncoder enc = ImageCodec.createImageEncoder("TIFF", os,
param);
enc.encode(bufferedImage);
os.close();
image.flush();
}
document.dispose();
map.put("pageCount", maxPages);
}
}
本文是转载的,转载地址为:https://blog.csdn.net/weixin_39513166/article/details/78695201
另外,用到两个jar包,分别为:jai_codec-1.1.3.jar 、icepdf-core-4.3.3.jar
注:1. 转换后的tif会比pdf大几倍,具体几倍没有测试,感兴趣的可以测试一下,请留言告诉我,多谢了。
2. 本文用做学习之用,如有违反任何规定,请联系我,我会及时删除!