Andorid 实现图片转成pdf的方法
用java语言写的图片转换成pdf
主要介绍了三种图片压缩方法 保存下来 以后学习
参考http://download.csdn.net/download/u010118528/5212196
1 package com.word; 2 3 import java.io.FileNotFoundException; 4 import java.io.FileOutputStream; 5 import java.io.IOException; 6 import android.annotation.SuppressLint; 7 import com.itextpdf.text.Document; 8 import com.itextpdf.text.DocumentException; 9 import com.itextpdf.text.Image; 10 import com.itextpdf.text.pdf.PdfWriter; 11 12 @SuppressLint("SdCardPath") 13 public class PhotoVerPdf { 14 15 public void t() 16 { 17 //创建一个文档对象 18 Document doc = new Document(); 19 try { 20 //定义输出文件的位置 21 PdfWriter.getInstance(doc, new FileOutputStream("/sdcard/myImage/test.pdf")); 22 //开启文档 23 doc.open(); 24 //设定字体 为的是支持中文 25 //BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); 26 // Font FontChinese = new Font(bfChinese, 12, Font.NORMAL); 27 //向文档中加入图片 28 for(int i=1;i<32;i++) 29 { 30 //取得图片~~~图片格式: 31 Image jpg1 = Image.getInstance("/sdcard/myImage/"+i+".jpg"); 32 //原来的图片的路径 33 //获得图片的高度 34 float heigth=jpg1.getHeight(); 35 float width=jpg1.getWidth(); 36 System.out.println("heigth"+i+"----"+heigth); 37 System.out.println("width"+i+"-----"+width); 38 //合理压缩,h>w,按w压缩,否则按w压缩 39 //int percent=getPercent(heigth, width); 40 //统一按照宽度压缩 41 int percent=getPercent2(heigth, width); 42 //设置图片居中显示 43 jpg1.setAlignment(Image.MIDDLE); 44 //直接设置图片的大小~~~~~~~第三种解决方案,按固定比例压缩 45 //jpg1.scaleAbsolute(210.0f, 297.0f); 46 //按百分比显示图片的比例 47 jpg1.scalePercent(percent);//表示是原来图像的比例; 48 //可设置图像高和宽的比例 49 //jpg1.scalePercent(50, 100); 50 doc.add(jpg1); 51 } 52 //关闭文档并释放资源 53 doc.close(); 54 } catch (FileNotFoundException e) { 55 e.printStackTrace(); 56 } catch (DocumentException e) { 57 e.printStackTrace(); 58 } catch (IOException e) { 59 e.printStackTrace(); 60 } 61 } 62 // /** 63 // * 第一种解决方案 64 // * 在不改变图片形状的同时,判断,如果h>w,则按h压缩,否则在w>h或w=h的情况下,按宽度压缩 65 // * @param h 66 // * @param w 67 // * @return 68 // */ 69 // 70 // public int getPercent(float h,float w) 71 // { 72 // int p=0; 73 // float p2=0.0f; 74 // if(h>w) 75 // { 76 // p2=297/h*100; 77 // } 78 // else 79 // { 80 // p2=210/w*100; 81 // } 82 // p=Math.round(p2); 83 // return p; 84 // } 85 /** 86 * 第二种解决方案,统一按照宽度压缩 87 * 这样来的效果是,所有图片的宽度是相等的,自我认为给客户的效果是最好的 88 * @param args 89 */ 90 public int getPercent2(float h,float w) 91 { 92 int p=0; 93 float p2=0.0f; 94 p2=530/w*100; 95 p=Math.round(p2); 96 return p; 97 } 98 // /** 99 // * 第三种解决方案,就是直接压缩,不安像素比例,全部压缩到固定值,如210*297 100 // * 101 // * @param args 102 // */ 103 // public static void main(String[] args) { 104 // PhotoVerPdf pt=new PhotoVerPdf(); 105 // pt.t(); 106 // } 107 }