如何应用PDFRenderer系统实现将PDF文档转换为图片的应用示例Word文档下载推荐.docx

上传人:b****5 文档编号:15682549 上传时间:2022-11-15 格式:DOCX 页数:19 大小:813.29KB
下载 相关 举报
如何应用PDFRenderer系统实现将PDF文档转换为图片的应用示例Word文档下载推荐.docx_第1页
第1页 / 共19页
如何应用PDFRenderer系统实现将PDF文档转换为图片的应用示例Word文档下载推荐.docx_第2页
第2页 / 共19页
如何应用PDFRenderer系统实现将PDF文档转换为图片的应用示例Word文档下载推荐.docx_第3页
第3页 / 共19页
如何应用PDFRenderer系统实现将PDF文档转换为图片的应用示例Word文档下载推荐.docx_第4页
第4页 / 共19页
如何应用PDFRenderer系统实现将PDF文档转换为图片的应用示例Word文档下载推荐.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

如何应用PDFRenderer系统实现将PDF文档转换为图片的应用示例Word文档下载推荐.docx

《如何应用PDFRenderer系统实现将PDF文档转换为图片的应用示例Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《如何应用PDFRenderer系统实现将PDF文档转换为图片的应用示例Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。

如何应用PDFRenderer系统实现将PDF文档转换为图片的应用示例Word文档下载推荐.docx

(1)示例程序类名称为PDFToImagePictureByPDFRenderer,程序包名称为com.bluedream.pdfrenderer

(2)将创建出PDFToImagePictureByPDFRenderer程序类的初始代码

4、编程PDFToImagePictureByPDFRenderer程序类的功能实现代码

(1)编程PDFToImagePictureByPDFRenderer程序类中的功能方法

(2)PDFToImagePictureByPDFRenderer程序类的完整代码示例

packagecom.bluedream.pdfrenderer;

importjava.awt.Image;

importjava.awt.Rectangle;

importjava.awt.image.BufferedImage;

importjava.io.File;

importjava.io.FileNotFoundException;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.io.RandomAccessFile;

importjava.lang.reflect.Method;

importjava.nio.MappedByteBuffer;

importjava.nio.channels.FileChannel;

importjava.security.AccessController;

importjava.security.PrivilegedAction;

importjava.util.UUID;

importcom.sun.image.codec.jpeg.ImageFormatException;

importcom.sun.image.codec.jpeg.JPEGCodec;

importcom.sun.image.codec.jpeg.JPEGEncodeParam;

importcom.sun.image.codec.jpeg.JPEGImageEncoder;

importcom.sun.pdfview.PDFFile;

importcom.sun.pdfview.PDFPage;

publicclassPDFToImagePictureByPDFRenderer{

publicPDFToImagePictureByPDFRenderer(){

super();

}

/**

*

*@paramorignalPDTFileName转换前的原始的PDF文件绝对路径和文件名称,比如StringorignalPDTFileName="

D:

\\软件项目程序\\Demo1\\demo1.pdf"

;

*@paramresultImagePathName转换后的图片存储的目录路径名称(绝对路径),比如StringresultImagePathName="

\\软件项目程序\\Demo1\\result\\"

*@paramexePandParameters图片清晰度(n>

0.0且n<

7.0),为PDF的放大参数,也就转换后的图片的尺寸为原始的PDF页尺寸的倍数,默认为1.0(与原始的PDF文件页尺寸相同);

<

1.0为缩小,>

1.0为放大

*@paramisPDFFileDeleted转换后是否要删除原始的PDF文件,=true删除原始的PDF文件,=false不删除原始的PDF文件

*/

publicbooleandoTransferPdfFileToPicture(StringorignalPDTFileName,StringresultImagePathName,floatexePandParameters,booleanisPDFFileDeleted){

RandomAccessFileoneRandomAccessFile=null;

MappedByteBufferoneMappedByteBuffer=null;

PDFFileonePDFFile=null;

FileOutputStreamoneFileOutputStream=null;

FileorignalPDTFile=null;

JPEGImageEncoderoneJPEGImageEncoder=null;

JPEGEncodeParamoneJPEGEncodeParam=null;

FileChanneloneFileChannel=null;

/**

*最终转换是否成功的返回状态标志,=false表示转换不成功,=true表示转换成功

*/

booleanisTransferOK=false;

orignalPDTFile=newFile(orignalPDTFileName);

try{

try{

/**

*以随机方式读取原始的PDF文档,并创建出RandomAccessFile类的对象实例

*/

oneRandomAccessFile=newRandomAccessFile(orignalPDTFile,"

r"

);

}catch(FileNotFoundExceptione){

*e.printStackTrace()是在标准错误输出流上打印整个Exception轨迹栈(会把从头到尾的方法都列出来,比较好查找错误),而System.out.print(e)只是打印了e.toString()方法返回的结果。

e.printStackTrace()的信息更丰富,更完整。

*e.printStackTrace()相当于System.out.print(e.getStackTrace().toString())

e.printStackTrace();

}

/**

*FileChannel是一个读、写、映射和操作文件的通道,文件通道有可以被查询和修改的一个当前位置。

getChannel方法返回的文件通道是被连接到相同的底层文件。

*但通过FileInputStream的getChannel方法获取的文件通道是只读的,而通过FileOutputStream的getChannel的方法获取的文件通道是可写的,

*通过RandomAccessFile的getChannel的方法获取的文件通道,在创建时如果传递的参数是“r"

,则为只读,否则为”读写“或者“写”。

*/

oneFileChannel=oneRandomAccessFile.getChannel();

*在FileChannel上调用map()方法会创建一个由磁盘文件支持的虚拟内存映射(virtualmemorymapping)并在那块虚拟内存空间外部封装一个MappedByteBuffer对象。

由map()方法返回的MappedByteBuffer对象的行为在多数方面类似一个基于内存的缓冲区,只不过该对象的数据元素存储在磁盘上的一个文件中。

map()方法有mode、position和size三个参数。

映射文件的范围不应超过文件的实际大小,如果您请求一个超出文件大小的映射,文件会被增大以匹配映射的大小。

假如您给size参数传递的值是Integer.MAX_VALUE,文件大小的值会膨胀到超过2.1GB。

oneMappedByteBuffer=

oneFileChannel.map(FileChannel.MapMode.READ_ONLY,0,oneFileChannel.size());

*通过内存映射机制来访问一个文件会比使用常规方法读写高效得多,甚至比使用通道的效率都高。

因为不需要做明确的系统调用,那会很消耗时间。

*更重要的是,操作系统的虚拟内存可以自动缓存内存页(memorypage)。

这些页是用系统内存来缓存的,所以不会消耗Java虚拟机内存堆(memoryheap)。

*文件映射可以是可写的或只读的。

前两种映射模式MapMode.READ_ONLY和MapMode.READ_WRITE意义是很明显的,

*它们表示您希望获取的映射只读还是允许修改映射的文件。

请求的映射模式将受被调用map()方法的FileChannel对象的访问权限所限制。

*如果通道是以只读的权限打开的而您却请求MapMode.READ_WRITE模式,那么map()方法会抛出一个NonWritableChannelException异常;

*如果您在一个没有读权限的通道上请求MapMode.READ_ONLY映射模式,那么将产生NonReadableChannelException异常。

*不过在以read/write权限打开的通道上请求一个MapMode.READ_ONLY映射却是允许的。

}catch(IOExceptione){

*将PDF文件转换为PDFFile对象,从而可以进行处理

onePDFFile=newPDFFile(oneMappedByteBuffer);

}

*获得待转换的PDF文件中的总页数

inttotalPageNumbers=onePDFFile.getNumPages();

*对待转换的PDF文件中的每一页进行转换处理

for(intcurrentPageNumber=1;

currentPageNumber<

=totalPageNumbers;

currentPageNumber++){

*获得指定页数的PDF页对象,它代表PDF文档文件中的某一页的内容

PDFPageonePDFPage=onePDFFile.getPage(currentPageNu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1