java导出pdf文件(插入图片及信息)
//需下载iText.jar及iTextAsian.jar包 //生成ean13格式或ean8格式条形码PDF打印 public void getExportPDF(List<Object> list, OutputStream os) throws MalformedURLException, IOException, DocumentException{ try { //itext在pdf中输入中文字体(中文楷体)时: bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); // 设置之纸张为A4纸,左右上下边距全部为5, document = new Document(PageSize.A4, 50, 50, 50, 50); // 构造好的pdf文件输出位置 PdfWriter pdf = PdfWriter.getInstance(document, os); } catch (DocumentException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } //生成PDF页脚 HeaderFooter footer = null; HeaderFooter header = null; //页眉信息 String headerStr = "此处为页眉"; //生成PDF页眉 header=new HeaderFooter(new Phrase(new Paragraph(headerStr, new com.lowagie.text.Font(bfChinese))),false); //生成PDF页脚,第多少页 footer=new HeaderFooter(new Phrase(" 第 ", new com.lowagie.text.Font(bfChinese)),new Phrase(" 页", new com.lowagie.text.Font(bfChinese))); //0居左1居中2居右 header.setAlignment(0); document.setHeader(header); footer.setBorder(Rectangle.NO_BORDER); footer.setAlignment(1); document.setFooter(footer); // 打开文件 document.open(); //创建表格 PdfPTable table = new PdfPTable(2);//两列 table.setWidthPercentage(100); //传入的对象信息 count = list.size(); //避免因为最后一行数据由于不能满足总列数而导致itext自动将其去掉,而生成一些多余的数 int column = 2; int persons = count; int yushu = persons % 2; int tmppersons = persons + (column - yushu); String barCodeString = ""; String barCode = ""; //对象信息输入pdf文件 for (int i = 0; i < tmppersons; i++) { if (i < persons) { //构造个两列一行的表格 PdfPTable mytable = new PdfPTable(2); //插入图片 Image image = Image.getInstance("image路径"); mytable.addCell(image); mytable.setWidthPercentage(80); String cntext = "测试"; mess = new Paragraph(cntext, new com.lowagie.text.Font(bfChinese,11)); //第二列放文字信息 mytable.addCell(mess); //在单元格中放置构造好的一个表格 table.addCell(mytable); } else { //避免因为最后一行数据由于不能满足总列数而导致itext自动将其去掉,不知道有没有其他方法,目前用多余的空格填充 table.addCell(" "); } } document.add(table); document.close(); }