如何应用ICEpdf系统实现将PDF文档转换为PNG格式图片的应用示例.docx
- 文档编号:11792521
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:17
- 大小:1.25MB
如何应用ICEpdf系统实现将PDF文档转换为PNG格式图片的应用示例.docx
《如何应用ICEpdf系统实现将PDF文档转换为PNG格式图片的应用示例.docx》由会员分享,可在线阅读,更多相关《如何应用ICEpdf系统实现将PDF文档转换为PNG格式图片的应用示例.docx(17页珍藏版)》请在冰点文库上搜索。
如何应用ICEpdf系统实现将PDF文档转换为PNG格式图片的应用示例
1.1如何应用ICEpdf系统实现将PDF文档转换为PNG格式图片的应用示例
1.1.1应用ICEpdf系统实现将PDF文档转换为PNG图片的应用示例
1、构建示例测试Java应用程序项目
(1)在MyEclipse开发工具中创建一个项目名称为JavaPDFApp的Java应用程序项目
(2)设置项目名称为JavaPDFApp
(3)项目结果
2、将ICEpdf系统文件加入到项目的编译环境中
(1)启动项目的属性菜单
(2)切换到JavaBuildPath页中的Libraries选项页
(3)将下载的ICEpdf系统文件加入到项目的编译环境中
3、在MyEclipse开发工具中创建示例程序类
(1)示例程序类名称为PDFToPNGImagePictureByICEpd,程序包名称为com.bluedream.icepdf
(2)将创建出PDFToPNGImagePictureByICEpd程序类的初始代码
4、编程PDFToPNGImagePictureByICEpd程序类的功能实现代码
(1)编程PDFToPNGImagePictureByICEpd程序类中的功能方法
本示例实现将PDF文档转换为JPEG格式的图片,而JPEG格式是目前网络上最流行的图像格式,是可以把文件压缩到最小的格式。
它允许用不同的压缩比例对文件进行压缩,支持多种压缩级别,压缩比率通常在10:
1到40:
1之间,压缩比越大,品质就越低。
相反地,压缩比越小,品质就越好,当然也可以在图像质量和文件尺寸之间找到平衡点。
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)PDFToPNGImagePictureByICEpd程序类的完整代码示例
packagecom.bluedream.icepdf;
importjava.awt.image.BufferedImage;
importjava.awt.image.RenderedImage;
importjava.io.File;
importjava.io.IOException;
importjava.util.ArrayList;
importjava.util.List;
importjava.util.UUID;
importjavax.imageio.ImageIO;
importorg.icepdf.core.pobjects.Document;
importorg.icepdf.core.pobjects.Page;
importorg.icepdf.core.util.GraphicsRenderingHints;
publicclassPDFToPNGImagePictureByICEpd{
/**
*存储转换结果的各个图片的文件路径和文件名称信息
*/
privateList
publicPDFToPNGImagePictureByICEpd(){
super();
}
publicList
returnresultImagesFileNameList;
}
/**
*
*@paramorignalPDTFileName转换前的原始的PDF文件绝对路径和文件名称,比如StringorignalPDTFileName="D:
\\软件项目程序\\Demo1\\demo1.pdf";
*@paramresultImagePathName转换后的图片存储的目录路径名称(绝对路径),比如StringresultImagePathName="D:
\\软件项目程序\\Demo1\\result\\";
*@paramexePandParameters为PDF的放大参数,也就转换后的图片的尺寸为原始的PDF页尺寸的倍数,默认为1.0(与原始的PDF文件页尺寸相同);<1.0为缩小,>1.0为放大
*@paramisPDFFileDeleted转换后是否要删除原始的PDF文件,=true删除原始的PDF文件,=false不删除原始的PDF文件
*/
publicbooleandoTransferPdfFileToPNGPicture(StringorignalPDTFileName,
StringresultImagePathName,floatscaleFactors,
booleanisPDFFileDeleted){
/**
*最终转换是否成功的返回状态标志,=false表示转换不成功,=true表示转换成功
*/
booleanisTransferOK=false;
/**
*转动的角度
*/
floatrotation=0f;
BufferedImageoneBufferedImage=null;
DocumentcurrentPDFDocument=null;
/**
*创建一个PDF文档对象
*/
currentPDFDocument=newDocument();
try{
/**
*将所创建出的PDF文档对象与待转换的PDF文档文件相互关联。
*/
try{
currentPDFDocument.setFile(orignalPDTFileName);
}
catch(ExceptiononeException){
oneException.printStackTrace();
}
/**
*获得PDF文档中的总页数
*/
inttotalPagesInPDFDocument=currentPDFDocument.getNumberOfPages();
/**
*创建存储转换后的各个图片的文件名称列表信息的集合对象,在上层的调用方法中可以获得,从而可以在界面中显示出各个结果图片。
*/
resultImagesFileNameList=newArrayList
/**
*对所获得的PDF文档中的每一页的内容进行转换
*/
for(intcurrentPageNumberIndex=0;currentPageNumberIndex /** *获得PDF文档中的某一页的内容,并转换为对应的Java内存图片对象 */ oneBufferedImage= (BufferedImage)currentPDFDocument.getPageImage(currentPageNumberIndex, GraphicsRenderingHints.SCREEN,Page.BOUNDARY_TRIMBOX, rotation,scaleFactors); /** *构建出转换后的每页图片的文件路径和文件名称 */ StringsomeOneImageFileName=resultImagePathName+ currentPageNumberIndex+"_"+UUID.randomUUID().toString()+".png"; Filefile=newFile(someOneImageFileName); resultImagesFileNameList.add(someOneImageFileName); try{ file.createNewFile(); } catch(IOExceptione){ e.printStackTrace(); } try{ ImageIO.write(oneBufferedImage,"png",file); } catch(IOExceptione){ e.printStackTrace(); } oneBufferedImage.flush(); } } finally{ /** *释放所创建出的PDF文档对象所占用的系统空间 */ currentPDFDocument.dispose(); } isTransferOK=true; returnisTransferOK; } publicstaticvoidmain(String[]args){ /** *转换前的原始的PDF文件绝对路径和文件名称 */ StringorignalPDTFileName="E: \\pdf\\testPDFFile.pdf"; /** *转换后的图片存储的目录路径名称(绝对路径),抓换后的结果图片为*.jpg格式,这样的文件容量比较小,而如果抓换为*.png格式,则图片文件容量比较大,不利于界面中的显示。 */ StringresultImagePathName="E: \\pdf\\result\\"; /** *转动的角度(旋转度数),=0不旋转 */ floatrotationAngle=0.0f; /** *为PDF的放大参数(转成成图片以后对图片的放大倍数),也就转换后的图片的尺寸为原始的PDF页尺寸的倍数,默认为1.0(与原始的PDF文件页尺寸相同);<1.0为缩小,>1.0为放大。 *它影响抓换后的图片中的字体清晰度。 但是这个参数不能太大,如文件特别大的时候就会内存溢出,建议在1~2之间。 */ floatscaleFactors=1f; /** *转换后是否要删除原始的PDF文件,=true删除原始的PDF文件,=false不删除原始的PDF文件 */ booleanisPDFFileDeleted=false; PDFToPNGImagePictureByICEpdonePDFToPNGImagePictureByICEpd= newPDFToPNGImagePictureByICEpd(); /** *调用转换的目标方法,并获得最终转换是否成功的返回状态标志,=false表示转换不成功,=true表示转换成功 */ booleanisTransferOK= onePDFToPNGImagePictureByICEpd.doTransferPdfFileToPNGPicture( orignalPDTFileName,resultImagePathName,scaleFactors,isPDFFileDeleted); /** *识别本次转换是否成功,如果转换成功,则获得转换后的各个图片的文件名称列表信息,从而可以在界面中显示出各个结果图片 */ if(isTransferOK){ /** *存储转换结果的各个图片的文件路径和文件名称信息 */ List /** *转换成功,则获得转换后的各个图片的文件名称列表信息,从而可以在界面中显示出各个结果图片 */ resultImagesFileNameList= onePDFToPNGImagePictureByICEpd.getResultImagesFileNameList(); } } } 5、执行PDFToPNGImagePictureByICEpd程序类 (1)给定测试用的PDF文档文件及转换后的图片文件的存放目录 本示例的测试用的PDF文档文件存放在E盘中的pdf目录中,测试用的PDF文档文件的文件名称为testPDFFile.pdf 转换后的图片文件的存放目录为E: \pdf\resultImg。 (2)执行PDFToPNGImagePictureByICEpd程序类 开始执行PDFToPNGImagePictureByICEpd程序类,如下为程序执行后的输出提示信息的局部截图: (3)PDFToPNGImagePictureByICEpd程序类的执行结果 (4)浏览转换后的图片文件的内容与原始的PDF文档中对应的内容完全保持一致性
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 如何 应用 ICEpdf 系统 实现 PDF 文档 转换 PNG 格式 图片 示例