Chinaunix首页 | 论坛 | 博客
  • 博客访问: 288228
  • 博文数量: 51
  • 博客积分: 2942
  • 博客等级: 少校
  • 技术积分: 555
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-01 22:47
文章分类

全部博文(51)

文章存档

2011年(16)

2010年(35)

分类:

2010-07-08 17:21:36

开源的纯JAVA实现对PDF文件进行操作的库有很多,但是iText无疑是最方便使用的一个。本文只是针对iText生成PDF文档进行了简单封装。需要使用到三个JAR包

iText-2.1.7.jar、iTextAsian.jar、iText-rtf-2.1.7.jar

iTEXT 5.0版本及其以上许可协议改为 AGPL了,是不可以在商业性的程序中直接使用的,5.0以下版本为MPL协议。2.1.7是5.0以下版本里最新的一个。

IPdf.java


package com.lib.file.pdf.api;

import java.io.OutputStream;
import java.util.List;

/**
 * PDF操作接口
 *
 * @author Indure
 *
 */
public interface IPdf {

    /**
     * 导出PDF文件流
     *
     * @param os
     *            PDF文件流
     * @param pdfModels
     *            文件模型数据:TextModel/ImageModel/TableModel
     */
    void save(OutputStream os, List pdfModels);

    /**
     * 导出PDF文件流
     *
     * @param os
     *            PDF文件流
     * @param title
     *            PDF标题
     * @param titleFontSize
     *            标题字体大小
     * @param paras
     *            段落文本
     * @param paraFontSize
     *            段落文本字体大小
     */
    void save(OutputStream os, String title, int titleFontSize, List paras, int paraFontSize);

    /**
     * 导出PDF文件
     *
     * @param filePath
     *            PDF文件
     * @param title
     *            PDF标题
     * @param titleFontSize
     *            标题字体大小
     * @param paras
     *            段落文本
     * @param paraFontSize
     *            段落文本字体大小
     */
    void save(String filePath, String title, int titleFontSize, List paras, int paraFontSize);

    /**
     * 导出PDF文件
     *
     * @param filePath
     *            PDF文件
     * @param pdfModels
     *            文件模型数据:TextModel/ImageModel/TableModel
     */
    void save(String filePath, List pdfModels);

}

ITextHelper.java

package com.lib.file;

import java.io.IOException;
import java.io.OutputStream;
import java.util.List;

import com.lowagie.text.Cell;
import com.lowagie.text.Chapter;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Font;
import com.lowagie.text.HeaderFooter;
import com.lowagie.text.Image;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.Rectangle;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.BaseFont;

import com.lib.file.model.ImageModel;
import com.lib.file.model.TableModel;
import com.lib.file.model.TextModel;


/**
 * IText 辅助类
 * @author Indure
 *
 */
public class ITextHelper {

    private static final SwpLogger mLogger = new SwpLogger(ITextHelper.class);

    private ITextHelper() {
    }

    /**
     * 保存文档
     *
     * @param os
     *            文档输出流
     * @param docModels
     *            文档部件类型
     * @param doc
     *            文档对象
     */
    public static void save(OutputStream os, List docModels, Document doc) {

        if (os == null || docModels == null) {
            throw new SwpException(ITextHelper.class, ExLevel.ERROR_INT, "os or pdfModels is null!");
        }

        long timeStart = 0;

        if (mLogger.isDebug()) {
            timeStart = System.currentTimeMillis();
        }

        int chptCount = 1;

        try {

            doc.open();

            doc.addAuthor("HeJY");
            doc.addCreationDate();

            BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
            Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);

            for (Object docModel : docModels) {

                if (docModel instanceof TableModel) {

                    // 处理表格
                    TableModel model = (TableModel) docModel;

                    int colNums = 0;

                    if (model.getHeaderCols() == null) {

                        if (model.getDatas() != null && !model.getDatas().isEmpty()) {
                            colNums = model.getDatas().get(0).length;
                        }

                    } else {
                        colNums = model.getHeaderCols().length;
                    }

                    if (colNums > 0) {

                        Table table = new Table(colNums);

                        // 设置表格属性
                        table.setPadding(3);

                        // 写列头
                        if (model.getHeaderCols() != null) {

                            // 设置字体
                            FontChinese.setSize(model.getHeaderFontSize());
                            FontChinese.setColor(model.getHeaderFontColor());

                            for (String headerCol : model.getHeaderCols()) {

                                Cell c = new Cell(new Phrase(headerCol, FontChinese));
                                c.setHeader(true);
                                c.setVerticalAlignment(Cell.ALIGN_MIDDLE);
                                c.setHorizontalAlignment(Cell.ALIGN_CENTER);
                                c.setBackgroundColor(model.getHeaderBackGroundColor());

                                table.addCell(c);
                            }

                            table.endHeaders();
                        }

                        // 写数据
                        if (model.getDatas() != null) {

                            // 设置字体
                            FontChinese.setSize(model.getTextFontSize());
                            FontChinese.setColor(model.getTextFontColor());

                            for (String[] datas : model.getDatas()) {
                                for (String data : datas) {

                                    Cell c = new Cell(new Phrase(data, FontChinese));
                                    c.setVerticalAlignment(Cell.ALIGN_MIDDLE);

                                    table.addCell(c);
                                }
                            }
                        }

                        doc.add(table);
                    }

                } else if (docModel instanceof ImageModel) {

                    // 处理图片
                    ImageModel model = (ImageModel) docModel;

                    Image img = null;

                    if (model.getFilePath() == null || model.getFilePath().isEmpty()) {
                        img = Image.getInstance(model.getURL());
                    } else {
                        img = Image.getInstance(model.getFilePath());
                    }

                    if (img != null) {

                        // 处理图片太大的情况
                        Rectangle rect = doc.getPageSize();
                        if (img.getWidth() > rect.getWidth() - 20) {
                            float per = ((img.getWidth() - rect.getWidth()) / img.getWidth()) * 100;
                            img.scalePercent(per);
                        }

                        img.setAlignment(Image.ALIGN_CENTER);

                        doc.add(img);
                    }

                } else {

                    // 处理文本
                    TextModel model = (TextModel) docModel;

                    // 设置字体、颜色、字体名称
                    if (model.getFontSize() > 0) {
                        FontChinese.setSize(model.getFontSize());
                    }

                    if (model.getFontName() != null) {
                        FontChinese.setFamily(model.getFontName());
                    }

                    if (model.getFontColor() != null) {
                        FontChinese.setColor(model.getFontColor());
                    }

                    // 处理不同类型的文本
                    if (model.getType() == TextModel.TEXT_TYPE_TITLE) {

                        // 标题
                        doc.addTitle(model.getTxt());
                        Paragraph pragraph = new Paragraph(model.getTxt(), FontChinese);
                        pragraph.setAlignment(Paragraph.ALIGN_CENTER);
                        pragraph.add(new Paragraph("   "));
                        pragraph.add(new Paragraph("   "));
                        doc.add(pragraph);

                    } else if (model.getType() == TextModel.TEXT_TYPE_SUBJECT) {

                        // 主题
                        doc.addSubject(model.getTxt());

                    } else if (model.getType() == TextModel.TEXT_TYPE_CHAPTER) {

                        // 章节
                        Paragraph pragraph = new Paragraph(model.getTxt(), FontChinese);
                        pragraph.add(new Paragraph("   "));

                        Chapter cht = new Chapter(pragraph, chptCount);

                        doc.add(cht);

                        chptCount++;

                    } else if (model.getType() == TextModel.TEXT_TYPE_HEADER) {

                        // 页眉
                        HeaderFooter header = new HeaderFooter(new Phrase(model.getTxt(), FontChinese), false);
                        header.setAlignment(HeaderFooter.ALIGN_CENTER);

                        doc.setHeader(header);

                    } else if (model.getType() == TextModel.TEXT_TYPE_FOOTER) {

                        // 页脚
                        HeaderFooter footer = new HeaderFooter(new Phrase(model.getTxt(), FontChinese), false);
                        footer.setAlignment(HeaderFooter.ALIGN_CENTER);
                        doc.setFooter(footer);

                    } else {

                        // 段落
                        Paragraph pragraph = new Paragraph(model.getTxt(), FontChinese);
                        // pragraph.add(new Paragraph(model.getTxt(),
                        // FontChinese));
                        pragraph.setFirstLineIndent(2 * FontChinese.getCalculatedSize());
                        doc.add(pragraph);
                    }

                }
            }

            mLogger.debug("export file , time consumed: " + (System.currentTimeMillis() - timeStart));

        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            throw new SwpException(ITextHelper.class, ExLevel.ERROR_INT, e);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            throw new SwpException(ITextHelper.class, ExLevel.ERROR_INT, e);
        } finally {

            try {
                if (doc != null) {
                    doc.close();
                }
            } catch (Exception e) {
                // TODO: handle exception
                throw new SwpException(ITextHelper.class, ExLevel.ERROR_INT, e);
            }
        }

    }
}

ITextPdfAdapter.java

package com.lib.file.pdf;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.PdfWriter;
import com.lib.exception.ExLevel;
import com.lib.exception.SwpException;
import com.lib.file.ITextHelper;
import com.lib.file.model.TextModel;
import com.lib.file.pdf.api.IPdf;

/**
 * @author Indure
 *
 */
public class ITextPdfAdapter implements IPdf {

    /*
     * (non-Javadoc)
     *
     * @see
     * com.lib.file.pdf.api.IPdf#save(com.itextpdf.text.pdf.codec
     * .Base64.OutputStream, java.util.List)
     */
    @Override
    public void save(java.io.OutputStream os, List pdfModels) {
        // TODO Auto-generated method stub
        if (os == null || pdfModels == null) {
            throw new SwpException(this.getClass(), ExLevel.ERROR_INT, "os or pdfModels is null!");
        }

        Document doc = new Document();

        try {

            PdfWriter.getInstance(doc, os);

        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            throw new SwpException(this.getClass(), ExLevel.ERROR_INT, e);
        }

        ITextHelper.save(os, pdfModels, doc);

    }

    /*
     * (non-Javadoc)
     *
     * @see
     * com.lib.file.pdf.api.IPdf#save(com.itextpdf.text.pdf.codec
     * .Base64.OutputStream, java.lang.String, int, java.util.List, int)
     */
    @Override
    public void save(java.io.OutputStream os, String title, int titleFontSize, List paras, int paraFontSize) {
        // TODO Auto-generated method stub
        if (os == null || paras == null) {
            throw new SwpException(this.getClass(), ExLevel.ERROR_INT, "os or paras is null!");
        }

        List pdfModels = new ArrayList();
        pdfModels.add(new TextModel(title, TextModel.TEXT_TYPE_TITLE, titleFontSize));

        for (String str : paras) {
            pdfModels.add(new TextModel(str, paraFontSize));
        }

        save(os, pdfModels);

    }

    /*
     * (non-Javadoc)
     *
     * @see com.lib.file.pdf.api.IPdf#save(java.lang.String,
     * java.util.List)
     */
    @Override
    public void save(String filePath, List pdfModels) {
        // TODO Auto-generated method stub

        if (filePath == null || pdfModels == null) {
            throw new SwpException(this.getClass(), ExLevel.ERROR_INT, "filePath or pdfModels is null!");
        }

        try {
            FileOutputStream fos = new FileOutputStream(filePath);
            save(fos, pdfModels);

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            throw new SwpException(this.getClass(), ExLevel.ERROR_INT, e);
        }
    }

    /*
     * (non-Javadoc)
     *
     * @see com.lib.file.pdf.api.IPdf#save(java.lang.String,
     * java.lang.String, int, java.util.List, int)
     */
    @Override
    public void save(String filePath, String title, int titleFontSize, List paras, int paraFontSize) {
        // TODO Auto-generated method stub

        if (filePath == null || paras == null) {
            throw new SwpException(this.getClass(), ExLevel.ERROR_INT, "filePath or paras is null!");
        }

        try {
            FileOutputStream fos = new FileOutputStream(filePath);
            save(fos, title, titleFontSize, paras, paraFontSize);

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            throw new SwpException(this.getClass(), ExLevel.ERROR_INT, e);
        }

    }

}

PdfImageModel.java


package com.lib.file.model;

import java.net.URL;

/**
 * 文档的部件类型--图像
 *
 * @author Indure
 *
 */
public class ImageModel {

    private String mFilePath;
    private URL mURL;

    /**
     * 构造方法
     *
     * @param url
     *            图片URL
     */
    public ImageModel(URL url) {
        mURL = url;
    }

    /**
     * 构造方法
     *
     * @param filePath
     *            图片路径
     */
    public ImageModel(String filePath) {
        mFilePath = filePath;
    }

    /**
     * @return 图片路径
     */
    public String getFilePath() {
        return mFilePath;
    }

    /**
     * @param filePath
     *            设置图片路径
     */
    public void setFilePath(String filePath) {
        mFilePath = filePath;
    }

    /**
     * @return 图片URL
     */
    public URL getURL() {
        return mURL;
    }

    /**
     * @param uRL
     *            设置图片URL
     */
    public void setURL(URL uRL) {
        mURL = uRL;
    }

    /*
     * (non-Javadoc)
     *
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        StringBuffer sb = new StringBuffer();
        sb.append("URL=");
        sb.append(mURL.toExternalForm());
        sb.append("\t");

        sb.append("filePath=");
        sb.append(mFilePath);
        sb.append("\t");

        return sb.toString();
    }
}

PdfTableModel.java

package com.lib.file.model;

import java.awt.Color;
import java.util.List;

/**
 * 文档的类型--数据表格
 *
 * @author Indure
 *
 */
public class TableModel {

    private String[] mHeaderCols;
    private List mDatas;

    private int mHeaderFontSize;
    private Color mHeaderFontColor;
    private Color mHeaderBackGroundColor;

    private int mTextFontSize;
    private Color mTextFontColor;

    /**
     * 构造方法
     *
     * @param headCols
     *            表格列头
     * @param datas
     *            表格数据
     */
    public TableModel(String[] headCols, List datas) {
        this(headCols, datas, 12, Color.BLACK, 9, Color.BLACK, Color.LIGHT_GRAY);
    }

    /**
     * 构造方法
     *
     * @param headCols
     *            表格列头
     * @param datas
     *            表格数据
     * @param headerFontSize
     *            列头字体大小
     * @param textFontSize
     *            数据字体大小
     */
    public TableModel(String[] headCols, List datas, int headerFontSize, int textFontSize) {
        this(headCols, datas, headerFontSize, Color.BLACK, textFontSize, Color.BLACK, Color.LIGHT_GRAY);
    }

    /**
     * 构造方法
     *
     * @param headCols
     *            表格列头
     * @param datas
     *            表格数据
     * @param headerFontSize
     *            列头字体大小
     * @param headerFontColor
     *            列头字体颜色
     * @param textFontSize
     *            数据字体大小
     * @param textFontColor
     *            数据字体颜色
     * @param headerBackGroundColor
     *            列头背景颜色
     */
    public TableModel(String[] headCols, List datas, int headerFontSize, Color headerFontColor, int textFontSize, Color textFontColor,
            Color headerBackGroundColor) {
        mHeaderCols = headCols;
        mDatas = datas;
        mHeaderFontSize = headerFontSize;
        mHeaderFontColor = headerFontColor;
        mTextFontColor = textFontColor;
        mTextFontSize = textFontSize;
        mHeaderBackGroundColor = headerBackGroundColor;
    }

    /**
     * @return 表格列头
     */
    public String[] getHeaderCols() {
        return mHeaderCols;
    }

    /**
     * @param headerCols
     *            设置表格列头
     */
    public void setHeaderCols(String[] headerCols) {
        mHeaderCols = headerCols;
    }

    /**
     * @return 表格数据
     */
    public List getDatas() {
        return mDatas;
    }

    /**
     * @param datas
     *            设置表格数据
     */
    public void setDatas(List datas) {
        mDatas = datas;
    }

    /**
     * @return 列头字体大小
     */
    public int getHeaderFontSize() {
        return mHeaderFontSize;
    }

    /**
     * @param headerFontSize
     *            设置列头字体大小
     */
    public void setHeaderFontSize(int headerFontSize) {
        mHeaderFontSize = headerFontSize;
    }

    /**
     * @return 列头字体颜色
     */
    public Color getHeaderFontColor() {
        return mHeaderFontColor;
    }

    /**
     * @param headerFontColor
     *            设置列头字体颜色
     */
    public void setHeaderFontColor(Color headerFontColor) {
        mHeaderFontColor = headerFontColor;
    }

    /**
     * @return 数据字体大小
     */
    public int getTextFontSize() {
        return mTextFontSize;
    }

    /**
     * @param textFontSize
     *            设置数据字体大小
     */
    public void setTextFontSize(int textFontSize) {
        mTextFontSize = textFontSize;
    }

    /**
     * @return 数据字体颜色
     */
    public Color getTextFontColor() {
        return mTextFontColor;
    }

    /**
     * @param textFontColor
     *            设置数据字体颜色
     */
    public void setTextFontColor(Color textFontColor) {
        mTextFontColor = textFontColor;
    }

    /**
     * @return 列头背景颜色
     */
    public Color getHeaderBackGroundColor() {
        return mHeaderBackGroundColor;
    }

    /**
     * @param headerBackGroundColor
     *            设置列头背景颜色
     */
    public void setHeaderBackGroundColor(Color headerBackGroundColor) {
        mHeaderBackGroundColor = headerBackGroundColor;
    }

    /*
     * (non-Javadoc)
     *
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        StringBuffer sb = new StringBuffer();
        sb.append("headCols=");

        if (mHeaderCols == null) {
            sb.append("");
        } else {
            for (String col : mHeaderCols) {
                sb.append(col);
                sb.append("\t");
            }
        }
        sb.append("\n");

        sb.append("datas=");
        if (mDatas == null) {
            sb.append("");
        } else {
            for (String[] datas : mDatas) {
                for (String data : datas) {
                    sb.append(data);
                    sb.append("\t");
                }
            }
        }

        return sb.toString();
    }

}

TextModel.java

package com.lib.file.model;

import java.awt.Color;

import com.lib.file.FileConstant;

/**
 * 文档的文本模型
 *
 * @author Indure
 *
 */
public class TextModel {

    /**
     * 文档的文本模型--标题
     */
    public static final int TEXT_TYPE_TITLE = 0;

    /**
     * 文档的文本模型--主题
     */
    public static final int TEXT_TYPE_SUBJECT = 1;

    /**
     * 文档的文本模型--章节
     */
    public static final int TEXT_TYPE_CHAPTER = 2;

    /**
     * 文档的文本模型--段落
     */
    public static final int TEXT_TYPE_PARAGRAPH = 3;

    /**
     * 文档的文本模型--页眉
     */
    public static final int TEXT_TYPE_HEADER = 4;

    /**
     * 文档的文本模型--页脚
     */
    public static final int TEXT_TYPE_FOOTER = 5;

    private String mTxt;
    private int mFontSize;
    private int mType;
    private String mFontName;
    private String mFontEncoding;
    private boolean mIsEmbeded;
    private Color mFontColor;

    /**
     * 构造方法
     *
     * @param txt
     *            需要显示的文本
     * @param type
     *            文本类型:TEXT_TYPE_TITLE ,TEXT_TYPE_SUBJECT
     *            ,TEXT_TYPE_CHAPTER,TEXT_TYPE_PARAGRAPH
     *            ,TEXT_TYPE_HEADER,TEXT_TYPE_FOOTER
     * @param fontSize
     *            字体大小
     */
    public TextModel(String txt, int type, int fontSize) {
        this(txt, type, fontSize, Color.BLACK, FileConstant.FONT_NAME_CHINESE, FileConstant.FONT_NAME_CHINESE_ENCODING, false);
    }

    /**
     * 构造方法
     *
     * @param txt
     *            需要显示的文本
     * @param type
     *            文本类型:TEXT_TYPE_TITLE ,TEXT_TYPE_SUBJECT
     *            ,TEXT_TYPE_CHAPTER,TEXT_TYPE_PARAGRAPH
     *            ,TEXT_TYPE_HEADER,TEXT_TYPE_FOOTER
     * @param fontSize
     *            字体大小
     * @param fontColor
     *            字体颜色
     */
    public TextModel(String txt, int type, int fontSize, Color fontColor) {
        this(txt, type, fontSize, fontColor, FileConstant.FONT_NAME_CHINESE, FileConstant.FONT_NAME_CHINESE_ENCODING, false);
    }

    /**
     * 构造方法
     *
     * @param txt
     *            需要显示的文本
     * @param fontSize
     *            字体大小
     * @param fontColor
     *            字体颜色
     */
    public TextModel(String txt, int fontSize, Color fontColor) {
        this(txt, TEXT_TYPE_PARAGRAPH, fontSize, fontColor, FileConstant.FONT_NAME_CHINESE, FileConstant.FONT_NAME_CHINESE_ENCODING, false);
    }

    /**
     * 构造方法
     *
     * @param txt
     *            需要显示的文本
     * @param fontSize
     *            字体大小
     */
    public TextModel(String txt, int fontSize) {
        this(txt, TEXT_TYPE_PARAGRAPH, fontSize, Color.BLACK, FileConstant.FONT_NAME_CHINESE, FileConstant.FONT_NAME_CHINESE_ENCODING, false);
    }

    /**
     * 构造方法
     *
     * @param txt
     *            需要显示的文本
     * @param type
     *            文本类型:TEXT_TYPE_TITLE ,TEXT_TYPE_SUBJECT
     *            ,TEXT_TYPE_CHAPTER,TEXT_TYPE_PARAGRAPH
     *            ,TEXT_TYPE_HEADER,TEXT_TYPE_FOOTER
     * @param fontSize
     *            字体大小
     * @param fontColor
     *            字体颜色
     * @param fontName
     *            字体名称 PdfConstant.FONT_NAME_CHINESE
     * @param fontEncoding
     *            字体编码类型 PdfConstant.FONT_NAME_CHINESE_ENCODING
     * @param isEmbeded
     *            是否为内置字体
     */
    public TextModel(String txt, int type, int fontSize, Color fontColor, String fontName, String fontEncoding, boolean isEmbeded) {
        mTxt = txt;
        mFontSize = fontSize;
        mType = type;
        mFontName = fontName;
        mFontColor = fontColor;
        mIsEmbeded = isEmbeded;
        mFontEncoding = fontEncoding;

    }

    /**
     * @return 显示的文本
     */
    public String getTxt() {
        return mTxt;
    }

    /**
     * @param txt
     *            设置显示的文本
     */
    public void setTxt(String txt) {
        mTxt = txt;
    }

    /**
     * @return 字体大小
     */
    public int getFontSize() {
        return mFontSize;
    }

    /**
     * @param fontSize
     *            设置字体大小
     */
    public void setFontSize(int fontSize) {
        mFontSize = fontSize;
    }

    /**
     * @return 文本类型:TEXT_TYPE_TITLE ,TEXT_TYPE_SUBJECT
     *         ,TEXT_TYPE_CHAPTER,TEXT_TYPE_PARAGRAPH
     *         ,TEXT_TYPE_HEADER,TEXT_TYPE_FOOTER
     */
    public int getType() {
        return mType;
    }

    /**
     * @param type
     *            设置文本类型:TEXT_TYPE_TITLE ,TEXT_TYPE_SUBJECT
     *            ,TEXT_TYPE_CHAPTER,TEXT_TYPE_PARAGRAPH
     *            ,TEXT_TYPE_HEADER,TEXT_TYPE_FOOTER
     */
    public void setType(int type) {
        mType = type;
    }

    /**
     * @return 字体名称 PdfConstant.FONT_NAME_CHINESE
     */
    public String getFontName() {
        return mFontName;
    }

    /**
     * @param fontName
     *            设置字体名称 PdfConstant.FONT_NAME_CHINESE
     */
    public void setFontName(String fontName) {
        mFontName = fontName;
    }

    /**
     * @return 是否为内置字体
     */
    public boolean isIsEmbeded() {
        return mIsEmbeded;
    }

    /**
     * @param isEmbeded
     *            设置是否为内置字体
     */
    public void setIsEmbeded(boolean isEmbeded) {
        mIsEmbeded = isEmbeded;
    }

    /**
     * @return 字体颜色
     */
    public Color getFontColor() {
        return mFontColor;
    }

    /**
     * @param fontColor
     *            设置字体颜色
     */
    public void setFontColor(Color fontColor) {
        mFontColor = fontColor;
    }

    /**
     * @return 字体编码类型 PdfConstant.FONT_NAME_CHINESE_ENCODING
     */
    public String getFontEncoding() {
        return mFontEncoding;
    }

    /**
     * @param fontEncoding
     *            设置字体编码类型 PdfConstant.FONT_NAME_CHINESE_ENCODING
     */
    public void setFontEncoding(String fontEncoding) {
        mFontEncoding = fontEncoding;
    }

    /*
     * (non-Javadoc)
     *
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        StringBuffer sb = new StringBuffer();
        sb.append("txt=");
        sb.append(mTxt);
        sb.append("\t");

        sb.append("type=");
        sb.append(mType);
        sb.append("\t");

        sb.append("fontName=");
        sb.append(mFontName);
        sb.append("\t");

        sb.append("fontSize=");
        sb.append(mFontSize);
        sb.append("\t");

        sb.append("fontColor=");
        sb.append(mFontColor.getRGB());
        sb.append("\t");

        sb.append("fontEncoding=");
        sb.append(mFontEncoding);
        sb.append("\t");

        sb.append("isEmbeded=");
        sb.append(mIsEmbeded);
        sb.append("\t");

        return sb.toString();
    }

}

FileConstant.java

package com.lib.file;

/**
 * PDF 常量定义
 *
 * @author Indure
 *
 */
public class FileConstant {

    /**
     * 中文字体
     */
    public static final String FONT_NAME_CHINESE = "STSong-Light";
    /**
     * 中文字体编码
     */
    public static final String FONT_NAME_CHINESE_ENCODING = "UniGB-UCS2-H";

}


阅读(6190) | 评论(1) | 转发(0) |
0

上一篇:tomcat 6 安装

下一篇:10个有用的FIREFOX 应用

给主人留下些什么吧!~~

zhxd2010-07-21 16:45:10

学习了。