PDF转为图片,PDF格式为RGB时可以;PDF格式为CMYK时图片颜色不对;
有什么方法?
以下为PDF转为图片代码:
public static void PdfToImg(File pdf, String filePath, String fileName) {
try {
RandomAccessFile raf = new RandomAccessFile(pdf, "r");
FileChannel channel = raf.getChannel();
MappedByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY,
0, channel.size());
PDFFile pdffile = new PDFFile(buf);
// 不循环则pdf只转一页
// for (int i = 1; i <= 2; i++) {
PDFPage page = pdffile.getPage(1);
Rectangle rect = new Rectangle(0, 0, ((int) page.getBBox()
.getWidth()), ((int) page.getBBox().getHeight()));
java.awt.Image img = page.getImage(rect.width, rect.height,
rect, null, true,  true);

BufferedImage image = new BufferedImage(rect.width, rect.height,
BufferedImage.TYPE_INT_RGB);
// 获取Graphics2D
Graphics2D g2d = image.createGraphics();
// ---------- 增加下面的代码使得背景透明 -----------------
g2d.dispose();
g2d = image.createGraphics();
// ---------- 背景透明代码结束 -----------------
// 画图
g2d.drawImage(img, 0, 0, null);
// //释放对象
g2d.dispose();
// 保存文件
File fileFolder = new File(filePath);
if(!fileFolder.exists()){
if(!fileFolder.mkdirs()){
ExceptionUtil.warn("写文件时,文件夹创建失败!文件位置:"+filePath+",文件名:"+fileName, SystemType.系统);
}
}
System.out.println(img.getClass());
System.out.println(image.getClass());
ImageIO.write(image, "jpg", new File(fileFolder.getAbsoluteFile()+File.separator+fileName));
// }
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}