android 使用itext.jar生成中文pdf文件

请先自行下载itext jar包,并导入到android 项目中

本文使用的是itextg-5.5.10.jar,直接贴代码

Document doc = new Document();

String path = Environment.getExternalStorageDirectory() + File.separator +"PDF" + File.separator;

File dir = new File(path);
if (!dir.exists()) {
    dir.mkdirs();
}

FileOutputStream fos = new FileOutputStream(new File(path +"test.pdf"));

PdfWriter.getInstance(doc, fos);

doc.open ();

1、若只是简单的一行文字内容显示,看依照一下方法

//添加一个主标题,并居中
Paragraph mainTitleP = new Paragraph("mainTitle", setChineseFont(16));
mainTitleP.setAlignment(Paragraph.ALIGN_CENTER);
//添加一个副标题,并居中
Paragraph subTitleP = new Paragraph(subTitle, setChineseFont(14));
subTitleP.setAlignment(Paragraph.ALIGN_CENTER);
//添加一行简单内存
Paragraph p = new Paragraph("简单PDF内容", setChineseFont(10));

doc.add(mainTitleP);
doc.add(subTitleP);
doc.add(p);

若PDF文档内容,单纯的一行一行显示的话,即可按照上面的方法,只需要把字体大小调整一下即可

上面用到的setChineseFont()方法来看一下,

//fontSize传入的参数就是显示的内容文字大小,可自行根据需要设置

   public static Font setChineseFont(int fontSize) {
        BaseFont bf = null;
        Font fontChinese = null;
        try {

            bf = BaseFont.createFont("/assets/STSONG.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

            fontChinese = new Font(bf, fontSize, Font.NORMAL);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return fontChinese;
    }

上面方法需要注意的就是中文字体文件STSONG.TTF,该文件是从Windows系统中拿到放入到项目的assets中的,该字体涉及的版权问题赞先不管,我们只是用于demo测试,后续可自行换可用的中文字体文件。

2、若在文档是使用到表格的话,可参考一下方法

//例如创建一个3列的表格,行数是依照插入的单元格数量自动生成

PdfPTable table = new PdfPTable(3);

//分别给每列表格设置宽度

table.setTotalWidth(new float[]{300, 220, 240});

//插入6个单元格内容

PdfPCell cellTable1 = new PdfPCell(new Paragraph("cell1", setChineseFont(12)));
tableInhale.addCell(cellTable1);

PdfPCell cellTable2 = new PdfPCell(new Paragraph("cell2", setChineseFont(12))); cellTable1.addCell(cellTable2 );

PdfPCell cellTable3 = new PdfPCell(new Paragraph("cell3", setChineseFont(12))); cellTable1.addCell(cellTable3 );

PdfPCell cellTable4 = new PdfPCell(new Paragraph("cell4", setChineseFont(12))); cellTable1.addCell(cellTable4 );

PdfPCell cellTable5 = new PdfPCell(new Paragraph("cell5", setChineseFont(12))); cellTable1.addCell(cellTable5 );

PdfPCell cellTable6 = new PdfPCell(new Paragraph("cell6", setChineseFont(12))); cellTable1.addCell(cellTable6 );
doc.add(cellTable1);

若某个单元格不显示如何内容时,也需要插入空“”

若某个单元格不需要边框,可设置(默认是存在边框的)

cell.setBorder(Rectangle.NO_BORDER);

若需要把第一列的2行单元格合并为一个单元格,可设置

cell1.setRowspan(2);

还有一些居中属性,看需求设置

cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);

3、最后加上

doc.close();
fos.flush();
fos.close();

以上代码就可生成一份简单的PDF文件了

 
 

猜你喜欢

转载自blog.csdn.net/chongchi_wxcc/article/details/126789312