直接上代碼
try{
String id = this.getRequest().getParameter("id";
String personId = this.getRequest().getParameter("personId"));
if(StringUtil.isNotEmpty(id)&&StringUtil.isNotEmpty(personId)){
PersonGradeInfo gradeInfo = persInfoManager.getGradeInfoById(id,personId);
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
com.lowagie.text.Document pdfDoc = new com.lowagie.text.Document(com.lowagie.text.PageSize.A4, 20, 20, 20, 20);
Font title = new Font(bfChinese, 20, Font.BOLD);
Font cellTitle = new Font(bfChinese, 11, Font.BOLD);
Font cellContent = new Font(bfChinese, 11, Font.NORMAL);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfWriter.getInstance(pdfDoc, baos);
pdfDoc.open();
Paragraph docTitle = new Paragraph("基 本 信 息 表\n", title);
docTitle.setAlignment(Element.ALIGN_CENTER);
docTitle.setSpacingBefore(20);
pdfDoc.add(docTitle);
int size = 35;
int contentSize = 30;
int widths[] = { 12,12, 25, 21, 25, 25, 25, 15, 15 };
PdfPTable baseTable = new PdfPTable(9);
baseTable.setWidthPercentage(100);
baseTable.setSpacingBefore(10);
baseTable.setWidths(widths);
PdfPCell baseTableCell = new PdfPCell(new Paragraph("姓名", cellTitle));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(2);
baseTableCell.setFixedHeight(size);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph(gradeInfo.getPersonName() + "", cellContent));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(1);
baseTableCell.setFixedHeight(size);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph("性別", cellTitle));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(1);
baseTableCell.setFixedHeight(size);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph(sexMap.get(gradeInfo.getSex()) + "", cellContent));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(1);
baseTableCell.setFixedHeight(size);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph("出生年月", cellTitle));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(1);
baseTableCell.setFixedHeight(size);
baseTable.addCell(baseTableCell);
Date birthday = gradeInfo.getBirthday();
if (null != birthday) {
int year = DateUtil.getYear(birthday);
int month = DateUtil.getMonth(birthday);
baseTableCell = new PdfPCell(new Paragraph(year + "年" + month + "月", cellContent));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(1);
baseTableCell.setFixedHeight(size);
baseTable.addCell(baseTableCell);
} else {
baseTableCell = new PdfPCell(new Paragraph("", cellContent));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(1);
baseTableCell.setFixedHeight(size);
baseTable.addCell(baseTableCell);
}
String url ="路徑";
java.net.URL imgurl = new java.net.URL(url);
java.awt.Image awtImage = ImageIO.read(imgurl);
if(null!=awtImage){
Image img = Image.getInstance(awtImage,null);
img.scaleAbsolute((float) 210, (float) 300);
baseTableCell = new PdfPCell(img,true);
baseTableCell.setPadding(1);
baseTableCell.setColspan(2);
baseTableCell.setRowspan(3);
baseTableCell.setFixedHeight(size*3);
baseTable.addCell(baseTableCell);
}else{
baseTableCell = new PdfPCell(new Paragraph("相片", cellContent));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(2);
baseTableCell.setRowspan(3);
baseTableCell.setFixedHeight(size*3);
baseTable.addCell(baseTableCell);
}
baseTableCell = new PdfPCell(new Paragraph("籍貫", cellTitle));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(2);
baseTableCell.setFixedHeight(size);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph(gradeInfo.getNativePlace() + "", cellContent));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(1);
baseTableCell.setFixedHeight(size);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph("民族", cellTitle));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(1);
baseTableCell.setFixedHeight(size);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph(nationMap.get(gradeInfo.getEthnic()) + "", cellContent));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(1);
baseTableCell.setFixedHeight(size);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph("政治面貌", cellTitle));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(1);
baseTableCell.setFixedHeight(size);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph(gradeInfo.getPoliticalStatus() + "", cellContent));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(1);
baseTableCell.setFixedHeight(size);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph("標準工資", cellTitle));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(2);
baseTableCell.setFixedHeight(size);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph( "", cellContent));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(1);
baseTableCell.setFixedHeight(size);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph("身體狀況", cellTitle));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(1);
baseTableCell.setFixedHeight(size);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph(gradeInfo.getHealthCondition(), cellContent));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(1);
baseTableCell.setFixedHeight(size);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph("外語程度", cellTitle));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(1);
baseTableCell.setFixedHeight(size);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph(gradeInfo.getForeignDegree(), cellContent));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(1);
baseTableCell.setFixedHeight(size);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph("學習\n經歷", cellTitle));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(1);
baseTableCell.setFixedHeight(contentSize*4);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph(gradeInfo.getStudyExperience(), cellContent));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_LEFT);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_LEFT);
baseTableCell.setColspan(8);
baseTableCell.setFixedHeight(contentSize*4);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph("特長", cellTitle));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(1);
baseTableCell.setFixedHeight(contentSize*3);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph(gradeInfo.getSpecialty(), cellContent));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_LEFT);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_LEFT);
baseTableCell.setColspan(8);
baseTableCell.setFixedHeight(contentSize*3);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph("獎罰", cellTitle));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(1);
baseTableCell.setFixedHeight(contentSize*3);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph(gradeInfo.getProbationReward(), cellContent));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_LEFT);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_LEFT);
baseTableCell.setColspan(8);
baseTableCell.setFixedHeight(contentSize*3);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph("見習\n工作", cellTitle));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(1);
baseTableCell.setRowspan(3);
baseTableCell.setFixedHeight(contentSize*10);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph("時間", cellTitle));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(2);
baseTableCell.setFixedHeight(contentSize);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph("部門崗位", cellTitle));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(2);
baseTableCell.setFixedHeight(contentSize);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph("主要工作內容", cellTitle));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(4);
baseTableCell.setFixedHeight(contentSize);
baseTable.addCell(baseTableCell);
Date probationTime = gradeInfo.getProbationTime();
if (null != probationTime) {
int year = DateUtil.getYear(probationTime);
int month = DateUtil.getMonth(probationTime);
baseTableCell = new PdfPCell(new Paragraph(year + "年" + month + "月", cellContent));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(2);
baseTableCell.setFixedHeight(size);
baseTable.addCell(baseTableCell);
} else {
baseTableCell = new PdfPCell(new Paragraph("", cellContent));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(2);
baseTableCell.setFixedHeight(size);
baseTable.addCell(baseTableCell);
}
baseTableCell = new PdfPCell(new Paragraph(gradeInfo.getProbationDept()+"", cellContent));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(2);
baseTableCell.setFixedHeight(contentSize);
baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell(new Paragraph(gradeInfo.getProbationContent()+"", cellContent));
baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
baseTableCell.setColspan(4);
baseTableCell.setFixedHeight(contentSize);
baseTable.addCell(baseTableCell);
// baseTableCell = new PdfPCell(new Paragraph(gradeInfo.getProbationSumm()+"", cellContent));
// baseTableCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_LEFT);
// baseTableCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_LEFT);
// baseTableCell.setColspan(8);
// baseTableCell.setFixedHeight(contentSize*8);
// baseTable.addCell(baseTableCell);
baseTableCell = new PdfPCell();
Paragraph para = new Paragraph(gradeInfo.getProbationSumm()+"\n",cellContent);
para.setAlignment(Element.ALIGN_LEFT);
baseTableCell.addElement(para);
para = new Paragraph("本人簽名: 年 月 日",cellContent);
para.setAlignment(Element.ALIGN_RIGHT);
baseTableCell.addElement(para);
baseTableCell.setPaddingTop(5);
baseTableCell.setPaddingBottom(5);
baseTableCell.setFixedHeight(contentSize*8);
baseTableCell.setColspan(8);
baseTable.addCell(baseTableCell);
pdfDoc.add(baseTable);
pdfDoc.close();
getResponse().setContentType("application/pdf");
getResponse().setHeader("Content-Disposition", "attachment; filename=" + StringUtil.transFileName(gradeInfo.getPersonName() + "-基本信息表", getRequest()) + ".pdf");
getResponse().setContentLength(baos.size());
baos.writeTo(getResponse().getOutputStream());
}
}catch(IOException e){
Log.doLog("EXCEPTION", e);
}
在每一個字段和他對應的內容都會有setColspan()方法來設置它所佔的列;
而行數默認是1行,所以在“相片”字段是需要3行的的時候,就必須用setRowspan(3)來設置;
setFixedHeight()是用來設置每一行的高度,可以自己設置;
注意:在顯示照片的地方,設置setPadding(),是照片對內邊框的設置;
setBorder()是設置邊框
在我寫的這個打印pdf的代碼中,遇到一個問題,當setPadding()和setBorder()一起使用的時候,相片的右邊將會沒有邊框
原因有2個:1)是由於圖片太大覆蓋了邊框;
2)由於設置setBorder(1)與後面的baseTable.addCell(baseTableCell);重複,所以邊框會消失
所以一般情況,setBorder()的值一般爲0,或不要設置這個值