Java将图片组合成PDF文件的方法
程序员文章站
2024-02-11 13:36:28
本文实例为大家分享了java将图片组合成pdf文件的具体代码,供大家参考,具体内容如下
程序界面图:
代码清单:
package 将图片组合成pdf文件;...
本文实例为大家分享了java将图片组合成pdf文件的具体代码,供大家参考,具体内容如下
程序界面图:
代码清单:
package 将图片组合成pdf文件; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.io.file; import java.io.filefilter; import java.io.fileoutputstream; import java.io.ioexception; import javax.swing.jbutton; import javax.swing.jfilechooser; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.joptionpane; import javax.swing.jpanel; import javax.swing.jtextfield; import javax.swing.filechooser.filenameextensionfilter; import com.itextpdf.text.document; import com.itextpdf.text.documentexception; import com.itextpdf.text.image; import com.itextpdf.text.pagesize; import com.itextpdf.text.pdf.pdfwriter; /* * 绘制主界面以及处理按钮事件类——jiemian_main * * */ class jiemian_mian extends jframe{ private static final long serialversionuid = 1657254256189721759l; final private string shuoming = " 使用说明: 本程序的主要功能就是将图片组按比例缩放合成于同一pdf文件里。 ——winmin"; private string dir_open = ""; private string dir_save = ""; public jframe jf = null; private jpanel jp = null; private jbutton jb_open = null; private jbutton jb_save =null; private jbutton jb_ok = null; private jtextfield jt_dir_open = null; private jtextfield jt_dir_save = null; private jlabel jl_dir_open = null; private jlabel jl_dir_save = null; private jlabel jl_lujing_open = null; private jlabel jl_lujing_save = null; private jtextfield jtf = null; public jiemian_mian(){ jf = new jframe("将图片组合成pdf文件"); jp = new jpanel(); jp.setlayout(null); /*标签*/ jl_dir_open = new jlabel("请选择图片组所在的文件夹:"); jl_dir_save = new jlabel("请选择pdf的合成位置:"); jl_lujing_open = new jlabel("路径:"); jl_lujing_save = new jlabel("路径:"); jl_dir_open.setbounds(50, 50, 200, 20); jl_dir_save.setbounds(420, 50, 200, 20); jl_lujing_open.setbounds(50, 80, 40, 20); jl_lujing_save.setbounds(420, 80, 40, 20); jp.add(jl_dir_open); jp.add(jl_dir_save); jp.add(jl_lujing_open); jp.add(jl_lujing_save); /*按钮*/ jb_open = new jbutton("浏览"); jb_save = new jbutton("浏览"); jb_ok = new jbutton("开始合成"); jb_open.setbounds(230, 80, 65, 20); jb_save.setbounds(600, 80, 65, 20); jb_ok.setbounds(310, 165, 90, 30); jb_open.addactionlistener(new open()); jb_save.addactionlistener(new save()); jb_ok.addactionlistener(new begin()); jp.add(jb_open); jp.add(jb_save); jp.add(jb_ok); /*单行文本(路径显示)*/ jt_dir_open = new jtextfield(); jt_dir_save = new jtextfield(); jt_dir_open.setbounds(90, 80, 130, 20); jt_dir_save.setbounds(460, 80, 130, 20); jt_dir_open.seteditable(false); jt_dir_save.seteditable(false); jp.add(jt_dir_open); jp.add(jt_dir_save); /*文本框(使用说明)*/ jtf = new jtextfield(shuoming); jtf.setbounds(50,225, 615, 50); jtf.setenabled(false); jp.add(jtf); /*主框*/ jf.add(jp); jf.setsize(715,315); jf.setresizable(false); jf.setlocationrelativeto(null); jf.setvisible(true); jf.setdefaultcloseoperation(jframe.exit_on_close); } /*获取图片路径的按钮事件处理*/ private class open implements actionlistener{ public void actionperformed(actionevent e){ lujing_get lujing_get = new lujing_get(jf); //创建lujing_get对象,获取图片组路径 dir_open = lujing_get.open_get(); jt_dir_open.settext(dir_open); } } /*获取选择保存pdf所生成位置的路径的按钮事件处理*/ private class save implements actionlistener{ public void actionperformed(actionevent e){ lujing_get lujing_get = new lujing_get(jf); //创建lujing_get对象,获取选择保存pdf所生成位置的路径 dir_save = lujing_get.save_get(); jt_dir_save.settext(dir_save); } } /*合成pdf的按钮事件处理*/ private class begin implements actionlistener{ public void actionperformed(actionevent e){ /*准确处理所获取的路径*/ if(dir_save.equals("") || dir_open.equals("")){ joptionpane.showmessagedialog(jf, "请输入图片组的路径及pdf的保存路径","警告",joptionpane.warning_message); }else{ file_deal fd = new file_deal(dir_open); //创建file_deal对象,将图片组路径下的所有图片文件准确加载 if(fd.files() != null){ /*准确处理pdf的命名规则(去掉后缀名)*/ if(dir_save.lastindexof(".") != (-1)) dir_save = dir_save.substring(0, dir_save.lastindexof(".")); wm_creatpdf pdf_creat = new wm_creatpdf(fd.files(),dir_save); //创建wm_creatpdf对象,生成pdf try { pdf_creat.creatpdf(); //合成pdf文件 } catch (documentexception e1) { // todo 自动生成的 catch 块 e1.printstacktrace(); } catch (ioexception e1) { // todo 自动生成的 catch 块 e1.printstacktrace(); } joptionpane.showmessagedialog(jf,"已合成pdf文件,所在位置:"+dir_save+".pdf", "完成",joptionpane.plain_message); }else joptionpane.showmessagedialog(jf, "该文件夹下没有图片格式文件(.jpg/.png/.bmp/.tif)!", "警告",joptionpane.warning_message); } } } } class lujing_get { private jframe jf = null; public lujing_get(jframe jf){ this.jf = jf; } public string open_get(){ string dir = ""; jfilechooser jfc = new jfilechooser(); //创建“选择文件浏览器”对象 jfc.setdialogtitle("请选择图片组所在的文件夹"); jfc.setfileselectionmode(jfilechooser.directories_only); int returnval = jfc.showopendialog(jf); if(jfilechooser.approve_option == returnval){ dir = jfc.getselectedfile().tostring(); } return dir; //返回路径 } public string save_get(){ string dir = ""; jfilechooser jfc = new jfilechooser(); //创建“选择文件浏览器”对象 jfc.setdialogtitle("请选择pdf的合成位置"); filenameextensionfilter filter = new filenameextensionfilter("pdf","pdf"); jfc.setfilefilter(filter); int returnval = jfc.showsavedialog(jf); if(jfilechooser.approve_option == returnval){ dir = jfc.getselectedfile().tostring(); } return dir; //返回路径 } } /* *获取图片文件 * * */ class file_deal{ private string dir_open = ""; public file_deal(string dir_open){ this.dir_open = dir_open; } public file[] files(){ file f = new file(dir_open); file fs[] = f.listfiles(new photofilefilter()); if(fs.length != 0) return fs; else return null; } } /* * * 文件过滤器,将所在目录下的图片格式文件返回 * */ class photofilefilter implements filefilter{ @override public boolean accept(file file) { // todo 自动生成的方法存根 if(file.isdirectory()) return false; else{ string name = file.getname(); if(name.endswith(".jpg") || name.endswith(".png")) return true; else if(name.endswith(".bmp") || name.endswith(".tif")) return true; else return false; } } } /* * 生成pdf文件(此类要外部引用“itextpdf.jar”,下载地址为:http://www.java2s.com/code/jar/i/itextpdf.htm) * * */ class wm_creatpdf { final private float a4_weight = 595-60; //标准a4的宽 final private float a4_height = 842-60; //标准a4的高 private file[] files = null; private string dir_save =""; public wm_creatpdf(file[] files,string dir_save){ this.files = files; this.dir_save = dir_save; } public void creatpdf() throws documentexception, ioexception{ document document = new document(pagesize.a4,30,30,30,30); //创建文档容器 pdfwriter.getinstance(document,new fileoutputstream(dir_save+".pdf")); //创建编写器(pdf类型) document.open(); //打开容器 float percent=100; float w,h; for(int i=0;i<files.length;i++){ image img = image.getinstance(files[i].getcanonicalpath()); /*处理图片缩放比例*/ w = img.getwidth(); h = img.getheight(); if((w > a4_weight)&&(h < a4_height)) percent = (a4_weight*100)/w ; else if((w < a4_weight)&&(h > a4_height)) percent = (a4_height*100)/h; else if((w > a4_weight)&&(h > a4_height)){ percent = (a4_weight*100)/w ; h = (h*percent)/100; if(h > a4_height) percent = (a4_height*100)/h; } img.scalepercent(percent); document.add(img); } document.close(); //关闭容器 } public static void main(string[] args) { // todo 自动生成的方法存根 new jiemian_mian(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
下一篇: Stata: 断点回归 (RDD) 教程
推荐阅读
-
Java将图片组合成PDF文件的方法
-
关于富文本编辑器—UEditor(java版)的使用,以及如何将UEditor的文件/图片上传路径改成绝对路径
-
php将/data/www/site1/image目录中的图片文件缩小成800*600像素的图片解决方法
-
手把手教你如何把加密的pdf电子书文件转换成图片的方法
-
使用python将图片按标签分入不同文件夹的方法
-
php使用Image Magick将PDF文件转换为JPG文件的方法_PHP教程
-
Nodejs中使用phantom将html转为pdf或图片格式的方法
-
python将YUV420P文件转PNG图片格式的两种方法
-
php使用Image Magick将PDF文件转换为JPG文件的方法_PHP
-
Python使用reportlab将目录下所有的文本文件打印成pdf的方法