请先自行下载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文件了