如何应用ICEpdf系统实现将PDF文档转换为JPEG格式图片的应用示例Word文件下载.docx

上传人:b****4 文档编号:18464470 上传时间:2022-12-16 格式:DOCX 页数:17 大小:1.28MB
下载 相关 举报
如何应用ICEpdf系统实现将PDF文档转换为JPEG格式图片的应用示例Word文件下载.docx_第1页
第1页 / 共17页
如何应用ICEpdf系统实现将PDF文档转换为JPEG格式图片的应用示例Word文件下载.docx_第2页
第2页 / 共17页
如何应用ICEpdf系统实现将PDF文档转换为JPEG格式图片的应用示例Word文件下载.docx_第3页
第3页 / 共17页
如何应用ICEpdf系统实现将PDF文档转换为JPEG格式图片的应用示例Word文件下载.docx_第4页
第4页 / 共17页
如何应用ICEpdf系统实现将PDF文档转换为JPEG格式图片的应用示例Word文件下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

如何应用ICEpdf系统实现将PDF文档转换为JPEG格式图片的应用示例Word文件下载.docx

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

如何应用ICEpdf系统实现将PDF文档转换为JPEG格式图片的应用示例Word文件下载.docx

JPEG格式压缩的主要是高频信息,对色彩的信息保留较好,适合应用于互联网,可减少图像的传输时间,可以支持24bit真彩色,也普遍应用于需要连续色调的图像。

(2)在MyEclipse开发工具中编程本示例的程序代码,需要引入两个系统程序包:

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

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

由于它们都是Sun公司的内部功能类及方法,并没有在JavaAPI中公开过,所以使用这些类及方法是不安全的,将来随时可能会从中去除。

另外在正常的编译时会如下的编译报错:

Accessrestriction:

ThetypeJPEGImageEncoderisnotaccessibleduetorestrictiononrequiredlibraryxxxx.jar

错误产生的主要原因是:

MyEclipse默认把这些受访问限制的API设成了ERROR。

此时解决办法:

只要把Windows-Preferences-Java-Complicer-Errors/Warnings里面的DeprecatedandrestrictedAPI中的Forbiddenreferences(accessrules)选为Warning就可以编译通过。

(3)PDFToJPEGImagePictureByICEpd程序类的完整代码示例

packagecom.bluedream.icepdf;

importjava.awt.image.BufferedImage;

importjava.io.File;

importjava.io.FileNotFoundException;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.util.ArrayList;

importjava.util.List;

importjava.util.UUID;

importorg.icepdf.core.pobjects.Document;

importorg.icepdf.core.pobjects.Page;

importorg.icepdf.core.util.GraphicsRenderingHints;

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

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

publicclassPDFToJPEGImagePictureByICEpd{

/**

*存储转换结果的各个图片的文件路径和文件名称信息

*/

privateList<

String>

resultImagesFileNameList=null;

publicPDFToJPEGImagePictureByICEpd(){

super();

}

publicList<

getResultImagesFileNameList(){

returnresultImagesFileNameList;

*

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

D:

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

;

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

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

*@paramrotationAngle为转动的角度(旋转度数),=0不旋转

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

*<

1.0为缩小,>

1.0为放大。

它影响抓换后的图片中的字体清晰度。

但是这个参数不能太大,如文件特别大的时候就会内存溢出,建议在1~2之间。

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

publicbooleandoTransferPdfFileToPicture(StringorignalPDTFileName,StringresultImagePathName,floatrotationAngle,floatscaleFactors,booleanisPDFFileDeleted){

/**

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

*/

booleanisTransferOK=true;

DocumentcurrentPDFDocument=null;

FileOutputStreamoneFileOutputStream=null;

JPEGImageEncoderoneJPEGImageEncoder=null;

JPEGEncodeParamoneJPEGEncodeParam=null;

*创建一个PDF文档对象

currentPDFDocument=newDocument();

try{

/**

*将所创建出的PDF文档对象与待转换的PDF文档文件相互关联,一次性将PDF文件的内容读入到内存中。

因此,程序占用的内存就会直线上升。

*/

try{

currentPDFDocument.setFile(orignalPDTFileName);

}

catch(ExceptiononeException){

/**

*设置转换出现错误的标志

*/

isTransferOK=false;

oneException.printStackTrace();

}

*获得PDF文档中的总页数

inttotalPagesInPDFDocument=currentPDFDocument.getNumberOfPages();

*创建存储转换后的各个图片的文件名称列表信息的集合对象,在上层的调用方法中可以获得,从而可以在界面中显示出各个结果图片。

resultImagesFileNameList=newArrayList<

();

*对所获得的PDF文档中的每一页的内容进行转换

for(intcurrentPageNumberIndex=0;

currentPageNumberIndex<

totalPagesInPDFDocument;

currentPageNumberIndex++){

*获得PDF文档中的某一页的内容,并转换为对应的Java内存图片对象,其中的Page.BOUNDARY_TRIMBOX为Definestheintendeddimensionsofthefinishedpageaftertrimming.org.icepdf.core.util.GraphicsRenderingHintsisusedtoapplydifferentrenderinghintsforprintingandscreenpresentationwhenrendingaPage'

scontent。

*GraphicsRenderingHints.SCREENspecifyrenderinghintspecifictoscreenrendering。

BufferedImageoneBufferedImage=

(BufferedImage)currentPDFDocument.getPageImage(currentPageNumberIndex,

GraphicsRenderingHints.SCREEN,Page.BOUNDARY_TRIMBOX,rotationAngle,scaleFactors);

*构建出转换后的每页图片的文件路径和文件名称

StringsomeOneImageFileName=resultImagePathName+

currentPageNumberIndex+"

_"

+UUID.randomUUID().toString()+"

.jpg"

try{

try{

/**

*为了能够将转换后的图片输出到目标文件流中,需要针对每个图片文件创建出对应的输出流对象

*/

oneFileOutputStream=

newFileOutputStream(someOneImageFileName);

}

catch(FileNotFoundExceptiononeException){

*设置转换出现错误的标志

isTransferOK=false;

oneException.printStackTrace();

/**

*JPEGCodec是用于图片的压缩功能类,下面的createJPEGEncoder方法是将指定的InputStream对象与将用于解码图像的新JPEGImageDecoder对象相关联。

*而JPEGImageEncoder可适用于其他图片类型的转换。

*/

oneJPEGImageEncoder=JPEGCodec.createJPEGEncoder(oneFileOutputStream);

oneJPEGEncodeParam=

oneJPEGImageEncoder.getDefaultJPEGEncodeParam(oneBufferedImage);

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

*/

oneJPEGEncodeParam.setQuality(1f,true);

oneJPEGImageEncoder.setJPEGEncodeParam(oneJPEGEncodeParam);

/**

*实现JPEG格式的编码,并在前面的oneFileOutputStream输出流中输出转换后的图片,并存储到目标目录中

*/

oneJPEGImageEncoder.encode(oneBufferedImage);

}

catch(ImageFormatExceptiononeException){

catch(IOExceptiononeException){

}

finally{

*刷新此Image对象正在使用的所有可重构的资源。

这包括为呈现到屏幕而缓存的所有像素数据,以及用来存储图像数据或像素的所有系统资源(如果可以重新创建它们)。

图像被重置为与初始创建时类似的状态,因此如果再次呈现图像,则必须重新创建图像数据或再次从源中获取这些数据。

oneBufferedImage.flush();

*关闭输出流对象,并释放相应的系统资源

oneFileOutputStream.close();

}catch(IOExceptiononeException){

}

finally{

*释放所创建出的PDF文档对象所占用的系统空间

currentPDFDocument.dispose();

*识别是否要求在转换为图片后,将原来的PDF文件删除掉。

如果需要,则进行删除。

但下面的代码一定要放在“currentPDFDocument.dispose();

”语句之后,否则将无法删除原始的PDF文件。

*因为原始的PDF文件仍然在使用,而没有释放。

if(isPDFFileDeleted){

FileorignalPDTFile=newFile(orignalPDTFileName);

orignalPDTFile.delete();

}

returnisTransferOK;

publicstaticvoidmain(String[]args){

*转换前的原始的PDF文件绝对路径和文件名称

StringorignalPDTFileName="

E:

\\pdf\\testPDFFile.pdf"

*转换后的图片存储的目录路径名称(绝对路径),抓换后的结果图片为*.jpg格式,这样的文件容量比较小,而如果抓换为*.png格式,则图片文件容量比较大,不利于界面中的显示。

StringresultImagePathName="

\\pdf\\result\\"

*转动的角度(旋转度数),=0不旋转

floatrotationAngle=0.0f;

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

<

*它影响抓换后的图片中的字体清晰度。

floatscaleFactors=1f;

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

booleanisPDFFileDeleted=false;

PDFToJPEGImagePictureByICEpdonePDFToJPEGImagePictureByICEpd=

newPDFToJPEGImagePictureByICEpd();

*调用转换的目标方法,并获得最终转换是否成功的返回状态标志,=false表示转换不成功,=true表示转换成功

booleanisTransferOK=onePDFToJPEGImagePictureByICEpd.doTransferPdfFileToPicture(

orignalPDTFileName,resultImagePathName,

rotationAngle,scaleFactors,isPDFFileDeleted);

*识别本次转换是否成功,如果转换成功,则获得转换后的各个图片的文件名称列表信息,从而可以在界面中显示出各个结果图片

if(isTransferOK){

*存储转换结果的各个图片的文件路径和文件名称信息

List<

*转换成功,则获得转换后的各个图片的文件名称列表信息,从而可以在界面中显示出各个结果图片

resultImagesFileNameList=

onePDFToImagePictureByICEpd.getResultImagesFileNameList();

}

5、执行PDFToJPEGImagePictureByICEpd程序类

(1)给定测试用的PDF文档文件及转换后的图片文件的存放目录

本示例的测试用的PDF文档文件存放在E盘中的pdf目录中,测试用的PDF文档文件的文件名称为testPDFFile.pdf

转换后的图片文件的存放目录为E:

\pdf\resultImg。

(2)执行PDFToJPEGImagePictureByICEpd程序类

开始执行PDFToJPEGImagePictureByICEpd程序类,如下为程序执行后的输出提示信息的局部截图:

(3)PDFToJPEGImagePictureByICEpd程序类的执行结果

(4)浏览转换后的图片文件的内容与原始的PDF文档中对应的内容完全保持一致性

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

当前位置:首页 > IT计算机 > 互联网

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

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