本文使用的是com.itextpdf,用Servlet导出,导出的结果带边框。
要注意的一下,别忘记设置contenttype:
response.setContentType("application/pdf;charset=ISO8859_1");
另外如果发现表格长宽不好调整,可以尝试修改纸张类型A3/A4:
Document document = new Document(PageSize.A3);
步骤如下:
1.引入到pom:
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.1</version>
</dependency>
2.controller
response.setContentType("application/pdf;charset=ISO8859_1");
response.setHeader("Content-disposition", "attachment; filename="aa.pdf");// 组装附件名称和格式
String[] titles = { "列名1", "列名t2", "列名3", "列名4", "t5", "t6","t7"};
String sheetName ="aa";
reportService.exportMsgPDF(areaId, data, page, limit, " order by record_date desc", titles,outputStream
,sheetName,changeLang);
3.实现
public void exportMsgPDF(Integer areaId, DATA data, Integer page,
Integer limit, String sort, String[] titles,
ServletOutputStream outputStream, String sheetName,
String changeLang) {
// TODO Auto-generated method stub
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//下面从数据库取数据的方法注意替换为自己的
Map<String, Object> dataMap = dataDAO.findByPagination(areaId, data, page, limit, sort);
List<DATA > list = (List<DATA>) dataMap
.get("data");
//文件输出流
ByteArrayOutputStream ba = new ByteArrayOutputStream();
Document document = new Document(PageSize.A3); // Step 1—Create a Document.
PdfWriter writer;
try {
writer = PdfWriter.getInstance(document, ba);
document.open();
} catch (DocumentException e) {
e.printStackTrace();
}
// 空加密,禁用编辑
// 页边空白
document.setMargins(5, 5, 5, 5);
// 设置字体
// BaseFont bfChinese;
try {
// //加入空行
Paragraph blankRow1 = new Paragraph(18f, " ");
blankRow1.setAlignment(Element.ALIGN_CENTER);
//table1
PdfPTable table1 = new PdfPTable(titles.length); //创建一个表格,2为一行有几栏
int width1[] = {55,50,70,60,50,50,55};//每栏的宽度
table1.setWidths(width1); //设置宽度
//首行
for(int i=0;i<titles.length;i++){
PdfPCell cell1 = new PdfPCell(new Paragraph("文字文字: "+titles[i]));
table1.addCell(cell1);
}
//每栏的值
for(DATA slInv1 : list){
PdfPCell cell1 = new PdfPCell(new Paragraph("文字文字: "+slInv1.getONE()));
table1.addCell(cell1);
String ope = "zh".equals(changeLang) ? op[slInv1.getTWO()] : opEn[slInv1.getTWO()];
PdfPCell cell2= new PdfPCell(new Paragraph("文字文字: "+ope));
table1.addCell(cell2);
PdfPCell cell3= new PdfPCell(new Paragraph("文字文字: "+slInv1.getTHREE()));
table1.addCell(cell3);
PdfPCell cell4= new PdfPCell(new Paragraph("文字文字: "+slInv1.getFOUR()));
table1.addCell(cell4);
PdfPCell cell5= new PdfPCell(new Paragraph("文字文字: "+slInv1.getFIVE()));
table1.addCell(cell5);
PdfPCell cell6= new PdfPCell(new Paragraph("文字文字: "+slInv1.getSIX().getAreaName()));
table1.addCell(cell6);
String canS = "zh".equals(changeLang) ? cancelState[slInv1.getSEVEN()] : cancelStateEn[slInv1.getSEVEN()];
PdfPCell cell7= new PdfPCell(new Paragraph("文字文字: "+ canS));
table1.addCell(cell7);
}
document.add(table1);//将表格加入到document中
document.add(blankRow1);
document.close();
ba.writeTo(outputStream);
outputStream.flush();
outputStream.close();
ba.close(); // 导出pdf注解
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
参考:
https://www.aliyun.com/jiaocheng/257843.html