java实现Img与PDF相互转换

  

本文实例为大家分享了java实现Img与PDF相互转换的具体代码,供大家参考,具体内容如下

  

不善于表达,就直接贴出代码吧。请大牛忽视我。
  

        进口java.awt.image.BufferedImage;   进口java.io.ByteArrayOutputStream;   进口java.io.File;   进口java.io.FileInputStream;   进口java.io.FileOutputStream;   进口java.io.InputStream;   进口java.io.RandomAccessFile;   进口java.nio.ByteBuffer;   进口java.nio.channels.FileChannel;   进口java.util.Map;   进口java.util.Map.Entry;   进口java.util.TreeMap;      进口com.Utils.ImgFileTool;   进口com.lowagie.text.Document;   进口com.lowagie.text.Image;   进口com.lowagie.text.Rectangle;   进口com.lowagie.text.pdf.PdfCopy;   进口com.lowagie.text.pdf.PdfImportedPage;   进口com.lowagie.text.pdf.PdfReader;   进口com.lowagie.text.pdf.PdfWriter;   进口com.sun.image.codec.jpeg.JPEGCodec;   进口com.sun.image.codec.jpeg.JPEGImageEncoder;   进口com.sun.pdfview.PDFFile;   进口com.sun.pdfview.PDFPage;/* *   *   * @author hubiao   * @dateTime 2014-06-07   *本工具对实现对IMG与PDF相互转换。   *运行测试需要导入以下2个jar包   * itext-2.0.2.jar   * PDFRenderer.jar   *   */@SuppressWarnings(未使用)   公开课ImgPdfUtils {   公共静态void main (String [] args){抛出异常//PDF包提取PDF//pdfExtraction ();//pdf转jpg//pdfToJpg (“E: \ \ java \ \资料pdf \ \ 1. pdf”,“E: \ \ java \ \资料pdf \ \ 1. jpg ", 1);//将多个jpg直接合并成pdf包//extractionPdf (“F: \ \ temp \ \项目\ \数据\ \ dfdsfds \ \巴黎公社活动家传略_img”、“F: \ \ temp \ \项目\ \数据\ \ dfdsfds \ \巴黎公社活动家传略_img.pdf”);//jpg转pdf//jpgToPdf ();//文件排序//listOrder ();      ImgFileTool。imgMerageToPdf(新文件(“F: \ \ temp \ \项目\ \数据\ \ dfdsfds \ \巴黎公社活动家传略_img”) .listFiles(),新文件(“F: \ \ temp \ \项目\ \数据\ \ dfdsfds \ \”,“巴黎公社活动家传略. pdf”));   }      私有静态孔隙listOrder () {      文件[]listFiles=新文件(“F: \ \ temp \ \项目\ \数据\ \ dfdsfds \ \巴黎公社活动家传略_img”) .listFiles ();   File> TreeMap<整数;树=new TreeMap<整数,File> ();   (文件f: listFiles)   {   tree.put (Integer.parseInt (f.getName () .replaceAll(“美元jpg”、“)), f);   }   (Entry<整数,File>如果遇到:tree.entrySet ())   {   System.out.println (eif.getKey () + "=" + eif.getValue () .toString ());   }   }/* *   * @param列表图片集合   * @param文件保存路径   * @return真的,合并完成   *如果文件名不jpg是1.,2. jpg, 3. jpg, 4. jpg这样的,则需要自己重写TreeMap的排序方式!   */公共静态布尔imgMerageToPdf([]列表,文件文件){抛出异常//1:对图片文件通过TreeMap以名称进行自然排序   File> Map<整数;mif=new TreeMap<整数,File> ();   (文件f:列表)   mif.put (Integer.parseInt (f.getName () .replaceAll(“美元jpg”、“)), f);//2:获取第一个Img的宽,高做文为PDF档标准   ByteArrayOutputStream包=new ByteArrayOutputStream (2048 * 3);   InputStream是=new FileInputStream (mif.get (1));   (int len; (len=is.read ()) !=1,)   baos.write (len);      baos.flush ();   图像图像=Image.getInstance (baos.toByteArray ());   浮动宽度=image.width ();   浮子高度=image.height ();   baos.close ();//3:通过宽高,实例化PDF文档对象。   文档文件=新文档(新矩形(宽度、高度));   PdfWriter pdfWr=PdfWriter。getInstance(文档、新FileOutputStream(文件);   document.open ();//4:获取每一个图片文件,转为IMG对象。装载到文档对象中   (Entry<整数,File>如果遇到:mif.entrySet ())   {//4.1:读取到内存中   包=new ByteArrayOutputStream (2048 * 3);   是=new FileInputStream (eif.getValue ());   (int len; (len=is.read ()) !=1,)   baos.write (len);   baos.flush ();//4.2通过字节字节生成IMG对象   形象=Image.getInstance (baos.toByteArray ());   Image.getInstance (baos.toByteArray ());   image.setAbsolutePosition (0.0, 0.0);//4.3:添加到文档中   document.add(图片);   document.newPage ();   baos.close ();   }//5:释放资源   document.close ();   pdfWr.close ();      返回true;   }/* *   *   * @param源源文件   * @param目标目标文件   * @param x读取源文件中的第几页   */私有静态孔隙pdfToJpg(源字符串,字符串目标,int x){抛出异常//创建从中读取和向其中写入(可选)的随机访问文件流,R表示对其只是访问模式   RandomAccessFile rea=新RandomAccessFile(新文件(源),“r”);//将流读取到内存中,然后还映射一个PDF对象   FileChannel频道=rea.getChannel ();   ByteBuffer buf=channel.map (FileChannel.MapMode。READ_ONLY 0 channel.size ());   PDFFile PDFFile=new PDFFile (buf);   PDFPage页面=pdfFile.getPage (x);//得到医生的宽度和高度在默认缩放   java.awt。新java.awt矩形矩形=>匦?0,0,(int) page.getBBox ()   .getWidth (), (int) page.getBBox () .getHeight ());//生成图像   java.awt。图像img=page.getImage(矩形。宽度、rect.height//宽度,//剪辑矩形矩形   空,//ImageObserver null   真的,//背景填充白色   真正的//阻塞,直到画就完成了   );      BufferedImage标签=new BufferedImage(矩形。宽度、rect.height   BufferedImage.TYPE_INT_RGB);      tag.getGraphics ()。drawImage (img, 0, 0 rect.width rect.height,   零);   FileOutputStream=新FileOutputStream(目标);//输出到文件流   JPEGImageEncoder编码器=JPEGCodec.createJPEGEncoder(出);   encoder.encode(标签);//JPEG编码   out.close ();   }/* *   * @param源源PDF文件路径   * @param目标保存PDF文件路径   * @param pageNum提取PDF中第pageNum页   * @throws例外   */私有静态孔隙pdfExtraction(源字符串,字符串目标,int pageNum){抛出异常//1:创建PDF读取对象   PdfReader公关=new PdfReader(源);   system . out。println(“本文档”+ pr.getNumberOfPages() +“页面”);//2:将第页页转为提取,创建文档对象   文档doc=新文档(pr.getPageSize (pageNum));//3:通过PdfCopy转其单独存储   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

java实现Img与PDF相互转换