import java.awt.Image
import java.awt.Rectangle
import java.awt.image.BufferedImage
import java.io.File
import java.io.FileOutputStream
import java.io.IOException
import java.io.RandomAccessFile
import java.nio.ByteBuffer
import java.nio.channels.FileChannel
import javax.swing.SwingUtilities
import com.sun.image.codec.jpeg.JPEGCodec
import com.sun.image.codec.jpeg.JPEGEncodeParam
import com.sun.image.codec.jpeg.JPEGImageEncoder
import com.sun.pdfview.PDFFile
import com.sun.pdfview.PDFPage
public class PdfToJpg {
public static void setup() throws IOException {
// 加载一个pdf从一个字节缓冲区
File file = new File("D:\\yangliu\\test.pdf")
RandomAccessFile raf = new RandomAccessFile(file, "r")
FileChannel channel = raf.getChannel()
ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0,
channel.size())
PDFFile pdffile = new PDFFile(buf)
System.out.println("携胡茄页数:" + pdffile.getNumPages())
String getPdfFilePath = System.getProperty("user.dir") + "\\pdfPicFile"
System.out.println("getPdfFilePath is :" + getPdfFilePath)
for (int i = 1i <pdffile.getNumPages()i++) {
// 画第一页到一个图像
PDFPage page = pdffile.getPage(i)
// 获得宽度和高度的文件在默认的变焦
Rectangle rect = new Rectangle(0, 0, (int) page.getBBox()
.getWidth(), (int) page.getBBox().getHeight())
/做告/ 生成图像
Image img = page.getImage(rect.width, rect.height, rect, null,
true, true)
BufferedImage tag = new BufferedImage(rect.width, rect.height,
BufferedImage.TYPE_INT_RGB)
tag.getGraphics().drawImage(img, 0, 0, rect.width, rect.height,
null)
// 输出到文件流
FileOutputStream out = new FileOutputStream(getPdfFilePath + "\\"
+ i + ".jpg")
System.out.println("成功保存图片到:"+getPdfFilePath+"辩察\\"+i+".jpg")
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out)
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(tag)
param.setQuality(1f, false)//1f是提高生成的图片质量
encoder.setJPEGEncodeParam(param)
encoder.encode(tag)// JPEG编码
out.close()
}
}
public static void main(final String[] args){
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
PdfToJpg.setup()
} catch (IOException e) {
e.printStackTrace()
}
}
})
}
}
//从流中还原图片Image image = Image.FromStream(你获取的图片流和搜纳)
//显示图片唤没
PictureBox 漏陪pic = new PictureBox()
pic.Image = image
//保存图片
image.Save(@"c:\pic.jpg")
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)