itext实现图片等比缩小放大转pdf

问题: itext, itext实现图片等比缩小放大转pdf

itext工具jar包实现图片转pdf,可以根据不同的方案来等比伸缩图片的大小,保证正常情况下图片不失真。
以下是个人写的工具类: 记得导入itext.jar包

package com.bestone.lawaid.opm.controller;

import com.lowagie.text.Document;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import com.lowagie.text.DocumentException;
import com.lowagie.text.Image;
import com.lowagie.text.pdf.PdfWriter;

public class TestCreatePDF {

    /**
     * 591227491@qq.com
     */
    public void creatPDF(String imgName)
    {
    //创建一个文档对象 
    Document doc = new Document();
    try {   
        //定义输出文件的位置   
        PdfWriter.getInstance(doc, new FileOutputStream("D:/Test/"+imgName+".pdf"));
        //开启文档   
        doc.open();   
        //设定字体 为的是支持中文   
        //BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);   
       // Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);   
        //向文档中加入图片 
        String path = "D:/EclipseSpace/ImagFile";
        //遍历文件下的文件
        File file = new File(path);
        File [] files = file.listFiles();
        for(int i=0;i<files.length;i++)
        {
             File file1 = files[i];
            //根据后缀判断是否是图片
             String[] imgTrue = file1.getName().split("\\.");
             if("png".equals(imgTrue[1])){
                //取得图片~~~图片格式:
                 System.out.println("---"+file1.getName());
                 Image jpg1 = Image.getInstance(path+"/"+imgTrue[0]+".png"); //原来的图片的路径
                 //获得图片的高度
                 float heigth=jpg1.getHeight();
                 float width=jpg1.getWidth();
                 System.out.println("heigth:"+imgTrue[0]+"----"+heigth);
                 System.out.println("width:"+imgTrue[0]+"-----"+width);
                 //合理压缩,h>w,按w压缩,否则按w压缩
                 //int percent=getPercent(heigth, width);
                 //统一按照宽度压缩
                 int percent=getPercent2(heigth, width);
                 System.out.println("--"+percent);
                 //设置图片居中显示
                 jpg1.setAlignment(Image.MIDDLE);
                 //直接设置图片的大小~~~~~~~第三种解决方案,按固定比例压缩
                 //jpg1.scaleAbsolute(210.0f, 297.0f);
                 //按百分比显示图片的比例
                 jpg1.scalePercent(percent);//表示是原来图像的比例;
                 //可设置图像高和宽的比例
                 //jpg1.scalePercent(50, 100);
                 doc.add(jpg1);
             }
        }
        //关闭文档并释放资源   
        doc.close();   
    } catch (FileNotFoundException e) {   
        e.printStackTrace();   
    } catch (DocumentException e) {   
        e.printStackTrace();   
    } catch (IOException e) {   
        e.printStackTrace();   
    }  
    }
    /**
     * 第一种解决方案
     * 在不改变图片形状的同时,判断,如果h>w,则按h压缩,否则在w>h或w=h的情况下,按宽度压缩
     * @param h
     * @param w
     * @return
     */

    public int getPercent(float h,float w)
    {
        int p=0;
        float p2=0.0f;
        if(h>w)
        {
            p2=297/h*100;
        }
        else
        {
            p2=210/w*100;
        }
        p=Math.round(p2);
        return p;
    }
    /**
     * 第二种解决方案,统一按照宽度压缩
     * 这样来的效果是,所有图片的宽度是相等的,自我认为给客户的效果是最好的
     * @param args
     */
    public int getPercent2(float h,float w)
    {
        int p=0;
        float p2=0.0f;
        p2=530/w*100;
        System.out.println("--"+p2);
        p=Math.round(p2);
        return p;
    }
    /**
     * 第三种解决方案,就是直接压缩,不安像素比例,全部压缩到固定值,如210*297
     * 
     * @param args
     */
    public static void main(String[] args) {
        TestCreatePDF pt=new TestCreatePDF();
        pt.creatPDF("imgCreatPdf");
    }
}

itext实现图片等比缩小放大转pdf

itext实现图片等比缩小放大转pdf

文件上传中...
原文链接:blog.csdn.net/Mr_li13/article/deta...

本作品采用《CC 协议》,转载必须注明作者和本文链接
zhaozhangxiao
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!