1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Java实现多张图片合并成一份PDF文件

Java实现多张图片合并成一份PDF文件

时间:2022-03-18 19:50:22

相关推荐

Java实现多张图片合并成一份PDF文件

Java实现多张图片合并成一份PDF文件,一行两列展示

引入依赖包

<dependency><groupId>com.lowagie</groupId><artifactId>itext</artifactId><version>2.1.7</version></dependency>

文件处理工具类

package cn.xyym.PDF;import java.io.File;/*** 文件处理工具类*/public class FileUtil {private static int index = 0; //存储数组/*** 截取文件后缀名* @param file 文件类* @return*/public static String fileLastName(File file) {if (file == null) {return null;}String filename = file.getName();String[] split = filename.split("\\.");if (split.length > 1) {return split[split.length - 1];} else {return "";}}/*** 返回列表文件* @param filePath 字符串 文件的路径 比如 G:/HTML/testData* @return*/public static String[] getFileList(String filePath){File file = new File(filePath); //获得文件路径File []fileList = file.listFiles(); //获得下属列表String[] strList = new String[1024]; //数组存储for(File f :fileList){//只要图片if(fileLastName(f) == "jpg" || fileLastName(f).equals("jpg") ||fileLastName(f) == "png" || fileLastName(f).equals("png")||fileLastName(f) == "jpeg" ||fileLastName(f).equals("jpeg")){strList[index++] = f.toString();//存储进去}}return strList;}}

图片转换PDF类

package cn.xyym.PDF;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import com.lowagie.text.*;import com.lowagie.text.pdf.PdfPCell;import com.lowagie.text.pdf.PdfPTable;import com.lowagie.text.pdf.PdfWriter;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;/*** 图片转换PDF类*/public class ImgPDF {public static void main(String[] args) {String[] fileList = FileUtil.getFileList("D:/PDF");String target = "D:/PDF/影像图片下载(一行两列).pdf";ImgPDF.ImgChangePDF(fileList,target);System.out.println("下载完成");}/*** 将图片转换成PDF* @param source 文件路径的集合 可以调用 FileUtil.getFileList() 方法* @param target PDF的名字和位置*/public static void ImgChangePDF(String []source, String target) {//创建一个文档对象Document doc = new Document();try {//定义输出文件的位置PdfWriter.getInstance(doc, new FileOutputStream(target));//开启文档doc.open();// 创建一个一行两列的表格PdfPTable table = new PdfPTable(2);for (int i = 0; i < source.length; i++) {if (source[i] == null) {break;}Image img = Image.getInstance(source[i]);Float h = img.getHeight();Float w = img.getWidth();Integer percent = getPercent(h, w);img.setAlignment(Image.MIDDLE);img.scalePercent(percent);PdfPCell cell = new PdfPCell(img); // 将图片放置在单元格中cell.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置单元格中的内容居中对齐cell.setBorder(Rectangle.NO_BORDER); // 去掉单元格的边框cell.setFixedHeight(200f); // 设置单元格的固定高度cell.setBorderWidth(300f); // 设置单元格的固定宽度table.addCell(cell); // 将单元格添加到表格中}doc.add(table); // 将表格添加到文档中// 循环获取图片文件夹内的图片(一行一列)/*for (int i = 0; i < source.length; i++) {if(source[i] == null){//前面的方法默认了数组长度是1024,所以这里就让它提前退出循环break;}//路径Image img = Image.getInstance(source[i]);//获得宽高Float h = img.getHeight();Float w = img.getWidth();//统一压缩Integer percent = getPercent(h, w);//图片居中img.setAlignment(Image.MIDDLE);//百分比显示图img.scalePercent(percent);//设置高和宽的比例doc.add(img);}*/// 关闭文档if(doc != null){doc.close();}} catch (IOException e) {e.printStackTrace();} catch (BadElementException e) {e.printStackTrace();} catch (DocumentException e) {e.printStackTrace();}}/*** 压缩* @param*/public static Integer getPercent(Float h,Float w){Integer g=0;Float g2=0.0f;g2=480/w*40;g=Math.round(g2);return g;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。