20140526-一个从pdf转换成图片的类,工作当中有用到

20140526-一个从pdf转换成图片的类,工作当中有用到




package com.jako.database.model;

import java.awt.Image;

import java.awt.Rectangle;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.RandomAccessFile;

import java.lang.reflect.Method;

import java.nio.MappedByteBuffer;

import java.nio.channels.FileChannel;

import java.security.AccessController;

import java.security.PrivilegedAction;

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;

publicclass PDFchangToImage {

    publicstaticvoid
main(String[] args)
{

        PDFchangToImage.changePdfToImg();

    }

    privatestaticvoid
changePdfToImg() {

        try {

            File
file =
new
File("E:\\679162c2.pdf");

            RandomAccessFile
raf =
new
RandomAccessFile(file,
"r");

            FileChannel
channel
= raf.getChannel();

            MappedByteBuffer
buf =
channel.map(FileChannel.MapMode.READ_ONLY,

                    0,
channel.size());

            PDFFile
pdffile
= new
PDFFile(buf);

            for (inti = 1; i <= pdffile.getNumPages(); i++) {

                PDFPage
page =
pdffile.getPage(i);

                Rectangle
rect =
new
Rectangle(0, 0, ((int)
page.getBBox()

                        .getWidth()),
((int)
page.getBBox().getHeight()));

                intn = 2;

                /** 图片清晰度(n>0且n<7)【pdf放大参数】
*/

                Image
img =
page.getImage(rect.width * n, rect.height * n,

                        rect, /** 放大pdf到n倍,创建图片。
*/

                        null, /** null for the ImageObserver */

                        true, /** fill background with white */

                        true/** block until drawing is done */

                );

                BufferedImage
tag =
new
BufferedImage(rect.width * n,

                        rect.height * n,
BufferedImage.TYPE_INT_RGB);

                tag.getGraphics().drawImage(img, 0, 0, rect.width * n,

                        rect.height * n, null);

                /**

                
* File imgfile = new File("D:\\work\\mybook\\FilesNew\\img\\" +

                
* i + ".jpg"); if(imgfile.exists()){

                
* if(imgfile.createNewFile()) { System.out.println("创建图片:"+

                
* "D:\\work\\mybook\\FilesNew\\img\\" + i + ".jpg"); } else {

                
* System.out.println("创建图片失败!");
} }

                
*/

                FileOutputStream
out =
new
FileOutputStream("D:\\"
+ i

                        +
"1003.jpg");

                /** 输出到文件流 */

                JPEGImageEncoder
encoder
= JPEGCodec.createJPEGEncoder(out);

                JPEGEncodeParam
param2
= encoder.getDefaultJPEGEncodeParam(tag);

                param2.setQuality(1f, true);

                /** 1f~0.01f是提高生成的图片质量 */

                encoder.setJPEGEncodeParam(param2);

                encoder.encode(tag);

                /** JPEG编码 */

                out.close();

            }

            channel.close();

            raf.close();

            unmap(buf);

            /** 如果要在转图片之后删除pdf,就必须要这个关闭流和清空缓冲的方法
*/

        }
catch
(FileNotFoundException e) {

            e.printStackTrace();

        }
catch
(IOException e)
{

            e.printStackTrace();

        }

    }

    @SuppressWarnings("unchecked")

    privatestaticvoid
unmap(final
Object buffer)
{

        AccessController.doPrivileged(new
PrivilegedAction() {

            public Object
run() {

                try {

                    Method
getCleanerMethod
= buffer.getClass().getMethod(

                            "cleaner",
new
Class[0]);

                    getCleanerMethod.setAccessible(true);

                    sun.misc.Cleaner
cleaner
= (sun.misc.Cleaner) getCleanerMethod

                            .invoke(buffer, new
Object[0]);

                    cleaner.clean();

                }
catch
(Exception e)
{

                    e.printStackTrace();

                }

                returnnull;

            }

        });

    }

}

这个类需要一个jar包支持:PDFRenderer-0.9.0.jar

下载地址:

http://yunpan.cn/QiCSHvKEzhM6S 访问密码 cf08

20140526-一个从pdf转换成图片的类,工作当中有用到,布布扣,bubuko.com

时间: 2024-10-24 08:58:01

20140526-一个从pdf转换成图片的类,工作当中有用到的相关文章

C#技术分享【PDF转换成图片——13种方案】(2013-07-25重新整理)

原文:C#技术分享[PDF转换成图片--13种方案](2013-07-25重新整理) 重要说明:本博已迁移到 石佳劼的博客,有疑问请到 文章新地址 留言!!! 写在最前面:为了节约大家时间,撸主把最常用的方法写在第一条,如果不满足您的需要,您可以继续往后看. 如果看完全文还是不能解决您的问题,欢迎加撸主的QQ群(274281457)进行讨论. 木有csdn分的童鞋,可以去github clone,地址:https://github.com/stone0090/OfficeTools.Pdf2Im

C#技术分享【PDF转换成图片——11种方案】

1.[iTextSharp.dll],C# 开源PDF处理工具,可以任意操作PDF,并可以提取PDF中的文字和图片,但不能直接将PDF转换成图片. DLL和源码 下载地址:http://download.csdn.net/detail/shi0090/4065982 中文帮助文档 下载地址:http://download.csdn.net/detail/shi0090/4065986 提取文字测试工程 下载地址:http://download.csdn.net/detail/shi0090/40

PDF转换成图片的小技巧,快快收藏

不论是学习还是工作,我们都会跟各种类型的文档打交道,时间久了,遇到的问题也会千奇百怪,比如:将PDF转换成图片的问题你遇到过吗?这个时候别慌,多学习一些技能,就能游刃有余.小编这里就有一个现成的PDF转换成图片的教程, 大家可以学习一下,以备不时之需. 1.前往在线PDF转换平台--pdf365.cn 2.点击"PDF转图片"图标,进入PDF文档上传页面,将需要转换的PDF文档添加到转换窗口中: 3.点击"开始转换"按钮,即可完成在线PDF转换成图片: 4.转换成功

分享在线pdf转换成图片格式方法

突然接到通知,被要求将pdf转换成jpg格式,而且需要在规定时间内完成大家会采取什么方法呢?截图显然不行,想要尽快完成转换任务其实只要找到专业的转换工具或平台就能完成啦,不仅转换速度快,而且效果好. 如果要转的文件并不是太多,那么可以用在线pdf转换器进行转换,先进入在线pdf转图片转换平台: 可以看到页面中有“选择文件”和“开始转换”按钮.我们先单击“选择文件”按钮,将要转的文件添加到转换页面中来: 接着单击“开始转换“按钮,转换速度很快,一会转换就能完成: 转换完成之后只要将文件下载下来就可

小技巧—如何将pdf文件转换成图片

有时候将文档内容发送给别人查看时,如果不想文档被修改或者复制,可以吧文档转换成一张张的图片,这样就可以了.不同的文档有不同的方法,如果转换的文档是pdf文件该怎么操作呢? 如果文档内容较少,那么不用借助任何工具,直接通过在线转换,就能把pdf转为图片. 在线转换是通过一些网页应用,来对文档进行转换操作的.进入到在线转换工具后,选择对应的转换类型,然后把要转换文档进行上传,等处理完成后下载下来就可以了. 工具:PDF转换成图片在线http://app.xunjiepdf.com/pdf2jpg 通

PDF转换技巧之怎样把PDF文件转换成图片?

PDF如何转换成图片:有很多小伙伴在工作中都会遇到一些文件转换的问题,每次遇到这些问题都会很头痛,不知道用什么方法可以更快的转换完成,尤其是遇到PDF要转换成图片这类的问题,这就需要一个比较专业的转换器可以节省很多时间. 那么,如何把PDF文件转换成图片?方法是什么?推荐使用迅捷PDF转换器,这是一款专业的PDF转换软件,功能齐全.操作简单.下面就一起来看看它是如何实现PDF转图片的吧! 第一步:打开下载安装好的PDF转换器进入首页,在首页的左边功能栏里可以看到PDF转换器的默认功能: 第二步:

教你怎样把PDF文件转换成图片

将一些PDF文件内容转换成为图片,这在办公中经常会遇到,不管是什么类型的文档要转换成图片,用截图方式是不能很快完成的,尤其是PDF这种文档,有些页面就有很多,那PDF文件如何转换成JPG格式图片. 将PDF转换成图片,一般是以文档的页面为单位,每个页面内容转换成一张图片,而且需要使每张图片的尺寸相同.那么在转换一些页面较少的PDF文档时,可以把PDF文件通过在线转换应用进行转换. 通过在线pdf转换成图片需要转换的PDF文档进行上传,在线转换完成后,将转换好图片的压缩包下载下来就可以了. 转换一

PDF怎么转换成图片格式:手把手教你学会

PDF文件是一中安全性比较高的文件在办公中也是经常能够用到的,它不仅安全性高,而且也很难进行编辑,而图片格式确是一种很容易进行编辑的,想要将PDF转换成图片格式并非是一件难事,那么PDF怎么转换成图片格式,想知道的话就跟着下面的文章继续往下看吧,手把手教你学会.PDF怎么转换成图片格式?下面是PDF转换成图片的案例演示:借助软件:迅捷PDF转换器步骤一:首先先将迅捷PDF转换器下载到电脑中去,之后可双击运行软件步骤二:进入到软件的功能页面,可点击"PDF转成其他文件"点击下方的&quo

如何使用pdf转换成word软件

如何使用pdf转换成word软件 我经常碰见这样的一个事情,就是在学习这种需要一些资料,在网上寻找的时候发现下载的都 是一些pdf格式的文件,可是下载后又不能复制,这个时候头就大了,该怎么办呢?这个时候只能是手动输入,可是太慢了,又完全不符合现代快节奏的生活.大 家只是没有找到快捷有效的方法,这里告诉给大家一个如何使用pdf转换成word软件,希望能有用. 迅捷pdf转换成word转换器 是当前在PDF识别率技术上出现重大突破的转换工具.软件识别率的提升得益于软件内置的PDF标准文件解析技术.通