当前位置:首页 > 编程教程 > java技术文章 > Java将图片组合成PDF文件的方法

Java将图片组合成PDF文件的代码分享

  • 发布时间:
  • 作者:码农之家
  • 点击:79

这篇文章主要知识点是关于java、PDF合成、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Java核心技术及面试指南
  • 类型:Java面试大小:220.6 MB格式:PDF作者:金华
立即下载

Java将图片组合成PDF文件的方法

本文实例为大家分享了Java将图片组合成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();


}


}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

Java 相关电子书
学习笔记
网友NO.764524

Java在PDF中添加表格过程详解

前言 本文将介绍通过Java编程在PDF文档中添加表格的方法。添加表格时,可设置表格边框、单元格对齐方式、单元格背景色、单元格合并、插入图片、设置行高、列宽、字体、字号等。 使用工具: Free Spire.PDF for Java (免费版) Jar文件获取及导入: 方法1: 通过官网下载jar文件包。下载后,解压文件,将lib文件夹下的Spire.Pdf.jar文件导入Java程序。 方法2: 通过maven仓库安装导入。 Java 代码示例 Java代码 import com.spire.pdf.*;import com.spire.pdf.graphics.*;import com.spire.pdf.grid.PdfGrid;import java.awt.*;public class AddTable { public static void main(String[]args){ //创建文档,添加PDF页面 PdfDocument pdf = new PdfDocument(); PdfPageBase page = pdf.getPages().add(); //创建PdfGrid对象 PdfGrid grid = new PdfGrid(); //设置单元格内边距、默认字体、字体颜色和默认背景色 grid.getStyle().setCellPadding(new PdfPaddings(3,3,3,3)); gri……

网友NO.717151

java通过PDF模板填写PDF表单

本文实例为大家分享了java通过PDF模板填写PDF表单的具体代码,包括图片,供大家参考,具体内容如下 需要用到的java包: itext.jar、iTextAsian.jar的JAR包。这个包里面定义了与中文输出相关的一些文件。 编写的表单如下: import java.io.ByteArrayOutputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.HashMap;import java.util.Map; import com.itextpdf.text.DocumentException;import com.itextpdf.text.Image;import com.itextpdf.text.Rectangle;import com.itextpdf.text.pdf.AcroFields;import com.itextpdf.text.pdf.BaseFont;import com.itextpdf.text.pdf.PdfContentByte;import com.itextpdf.text.pdf.PdfReader;import com.itextpdf.text.pdf.PdfStamper; /** * pdf工具类 * @author MOSHUNWEI * @since 2018-02-01 */public class PDFUtil { /** * 根据模板生成pdf * @param data Map(String,Object) * @return */ public static boolean createPDF(String path,MapString, Object data) { PdfReader reader = null; AcroFi……

网友NO.752380

Java创建和填充PDF表单域方法

表单域,可以按用途分为多种不同的类型,常见的有文本框、多行文本框、密码框、隐藏域、复选框、单选框和下拉选择框等,目的是用于采集用户的输入或选择的数据。下面的示例中,将分享通过Java编程在PDF中添加以及填充表单域的方法。这里填充表单域可分为2种情况,一种是在创建表单域时填充,一种是加载已经创建好表单域的文档进行填充。此外,对于已经创建表单域并填写好的文档,也可以设置只读,防止修改、编辑。 要点概括: 1.创建表单域 2.填充表单域 3.设置表单域只读 工具:Free Spire.PDF for Java v2.0.0(免费版) Jar文件导入 步骤1:在Java程序中新建一个文件夹可命名为Lib。并将产品包中的2个jar文件复制到新建的文件夹下。 步骤2:复制文件后,添加到引用类库:选中这两个jar文件,点击鼠标右键,选择“Build Path” – “Add to Build Path”……

网友NO.394090

Java使用icepdf将pdf文件按页转成图片

本文实例为大家分享了Java使用icepdf将pdf文件按页转成图片的具体代码,供大家参考,具体内容如下 Maven icepdf包,这里过滤掉jai-core dependency groupIdorg.icepdf.os/groupId artifactIdicepdf-core/artifactId version6.1.2/version exclusions exclusion groupIdjavax.media/groupId artifactIdjai-core/artifactId /exclusion /exclusions/dependency 代码如下 import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.text.DecimalFormat;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Map;import javax.imageio.IIOImage;import javax.imageio.ImageIO;import javax.imageio.ImageWriter;import javax.imageio.stream.ImageOutputStream;import org.apache.commons.logging.LogFactory;import org.icepdf.core.exceptions.PDFException;import org.icepdf.core.exceptions.PDFSecurityException;import org.icepdf.core.pobjects.Document;import org.icepdf.core.pobjects.Page;imp……

网友NO.893435

java实现Img与PDF相互转换

本文实例为大家分享了java实现Img与PDF相互转换的具体代码,供大家参考,具体内容如下 不善于表达,就直接贴出代码吧。请大牛忽视我。 import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.util.Map; import java.util.Map.Entry; import java.util.TreeMap; import com.Utils.ImgFileTool; import com.lowagie.text.Document; import com.lowagie.text.Image; import com.lowagie.text.Rectangle; import com.lowagie.text.pdf.PdfCopy; import com.lowagie.text.pdf.PdfImportedPage; import com.lowagie.text.pdf.PdfReader; import com.lowagie.text.pdf.PdfWriter; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; import com.sun.pdfview.PDFFile; import com.sun.pdfview.PDFPage; /** * ……

<
1
>

Copyright 2018-2020 www.xz577.com 码农之家

版权投诉 / 书籍推广 / 赞助:520161757@qq.com