}
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
public class PdfFileExport{
/**
* 从数据库中导出数据并以PDF文件形式存储
* 列信息较多,行信息可能超过100万
* 文档仅有只读权限,设置文档作者信息
* 在文档页头设置公司信息版权信息
* 添加公司的文字和图片水印信息
* @param fullFilePath
* @param tableContent
* @param rowsNumber
* @param submitAmount
* @return
*/
public boolean exportTableContent(String fullFilePath,String[][] tableContent,int rowsNumber,int submitAmount){
Document pdfDocument = new Document(PageSize.A2,50,50,50,50);
System.out.println(tableContent.length);
try {
//创建文件夹
int temp = fullFilePath.lastIndexOf("/");
String filePath = fullFilePath.substring(0,temp);
File File = new File(filePath);
if (!File.exists()) {
File.mkdirs();
}
//构建一个PDF文档输出流程
OutputStream pdfFileOutputStream = new FileOutputStream(new File(fullFilePath));
PdfWriter pdfWriter = PdfWriter.getInstance(pdfDocument,pdfFileOutputStream);
//设置作者信息
PdfFileExportUtil.setCreatorInfo(pdfDocument);
//设置文件只读权限
// PdfFileExportUtil.setReadOnlyPDFFile(pdfWriter);
//通过PDF页面事件模式添加文字水印功能
PdfFileExportUtil pdfFileExportUtil = new PdfFileExportUtil();
// pdfWriter.setPageEvent(pdfFileExportUtil.new TextWaterMarkPdfPageEvent("爱温管理系统"));
//通过PDF页面事件模式添加图片水印功能
// String waterMarkFullFilePath = "D:/temp/Export/login_logo.gif";//水印图片
// pdfWriter.setPageEvent(pdfFileExportUtil.new PictureWaterMarkPdfPageEvent(waterMarkFullFilePath));
//通过PDF页面事件模式添加页头和页脚信息功能
pdfWriter.setPageEvent(pdfFileExportUtil.new HeadFootInfoPdfPageEvent());
//设置中文字体和字体样式
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font f8 = new Font(bfChinese, 13, Font.NORMAL);
//打开PDF文件流
pdfDocument.open();
//创建一个N列的表格控件
PdfPTable pdfTable = new PdfPTable(tableContent[0].length);
//设置表格占PDF文档100%宽度
pdfTable.setWidthPercentage(100);
//水平方向表格控件左对齐
pdfTable.setHorizontalAlignment(PdfPTable.ALIGN_LEFT);
//创建一个表格的表头单元格
PdfPCell pdfTableHeaderCell = new PdfPCell();
//设置表格的表头单元格颜色
// pdfTableHeaderCell.setBackgroundColor(new BaseColor(213, 141, 69));
pdfTableHeaderCell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
// for(String tableHeaderInfo : tableContent[0]){
// pdfTableHeaderCell.setPhrase(new Paragraph(tableHeaderInfo, f8));
// pdfTable.addCell(pdfTableHeaderCell);
// }
//创建一个表格的正文内容单元格
PdfPCell pdfTableContentCell = new PdfPCell();
pdfTableContentCell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
pdfTableContentCell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
//表格内容行数的填充
for(int i = 0;i < tableContent.length;i++){
for(String tableContentInfo : tableContent[i]){
pdfTableContentCell.setPhrase(new Paragraph(tableContentInfo, f8));
pdfTable.addCell(pdfTableContentCell);
}
//表格内容每写满某个数字的行数时,其内容一方面写入物理文件,另一方面释放内存中存留的内容。
if((i%submitAmount)==0){
pdfDocument.add(pdfTable);
pdfTable.deleteBodyRows();
}else if(i==rowsNumber){
//如果全部类容完毕且又没达到某个行数限制,则也要写入物理文件中。
pdfDocument.add(pdfTable);
pdfTable.deleteBodyRows();
}
}
return true;
}catch(FileNotFoundException de) {
de.printStackTrace();
System.err.println("pdf file: " + de.getMessage());
return false;
}catch(DocumentException de) {
de.printStackTrace();
System.err.println("document: " + de.getMessage());
return false;
}catch(IOException de) {
de.printStackTrace();
System.err.println("pdf font: " + de.getMessage());
return false;
}finally{
//关闭PDF文档流,OutputStream文件输出流也将在PDF文档流关闭方法内部关闭
if(pdfDocument!=null){
pdfDocument.close();
}
}
}
/* public static void main(String[] args) {
String[][] tableContent = new String[][]{{"序号","姓名","年龄","职业","籍贯","学历","单位名称","联系电话","联系地址"},
{"1","许果","31","软件工程师","浙江杭州","大学本科","浙江水果大王信息技术有限公司","18905710571","浙江省杭州市西湖区三墩镇三墩街188号1"}
};
PdfFileExportServiceImpl pdfFileExport = new PdfFileExportServiceImpl();
SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmss");
String warrantyCard = sdf.format(new java.util.Date());
pdfFileExport.exportTableContent("D:/temp/pdftest/"+warrantyCard+"41导出PDF文档.pdf", tableContent, 30, tableContent.length-1);
} */
}
public void getReservationBypdf(@ModelAttribute("queryDt")QueryDt queryDt,@ModelAttribute("memberVo") MemberVo memberVo) throws Exception{
PageResult
String expiredCheckBox=memberVo.getExpiredCheckBox();
String[] strArr = expiredCheckBox.split(",");
String[][] tableContent = new String[pageResult.getContent().size()+1][strArr.length];
for (int i = 0; i < strArr.length; i++) {
if(strArr[i].equals("1")){
tableContent[0][i]="省份";
}
if(strArr[i].equals("2")){
tableContent[0][i]="城市";
}
if(strArr[i].equals("3")){
tableContent[0][i]="车牌";
}
if(strArr[i].equals("4")){
tableContent[0][i]="姓名";
}
if(strArr[i].equals("5")){
tableContent[0][i]="车型";
}
if(strArr[i].equals("6")){
tableContent[0][i]="车龄";
}
if(strArr[i].equals("7")){
tableContent[0][i]="联系方式 ";
}
if(strArr[i].equals("8")){
tableContent[0][i]="已行驶公里数";
}
if(strArr[i].equals("9")){
tableContent[0][i]="加注爱温时间";
}
if(strArr[i].equals("10")){
tableContent[0][i]="加注地点";
}
if(strArr[i].equals("11")){
tableContent[0][i]="施工员姓名";
}
if(strArr[i].equals("12")){
tableContent[0][i]="施工员手机";
}
if(strArr[i].equals("13")){
tableContent[0][i]="测水率原液值";
}
if(strArr[i].equals("14")){
tableContent[0][i]="测水率加注后值";
}
}
if(pageResult.getContent().size()>0){
for(int j=0;j
if(strArr[i].equals("1")){
if(pageResult.getContent().get(j).getProvinceId()==null){
tableContent[j+1][i]="";
}else{
tableContent[j+1][i]=pageResult.getContent().get(j).getProvincesCity().getProCityName();
}
}
if(strArr[i].equals("2")){
if(pageResult.getContent().get(j).getCityId()==null){
tableContent[j+1][i]="";
}else{
tableContent[j+1][i]=pageResult.getContent().get(j).getCity().getProCityName();
}
}
if(strArr[i].equals("3")){
if(pageResult.getContent().get(j).getLicence()==null){
tableContent[j+1][i]="";
}else{
tableContent[j+1][i]=pageResult.getContent().get(j).getLicence();
}
}
if(strArr[i].equals("4")){
if(pageResult.getContent().get(j).getLicence()==null){
tableContent[j+1][i]="";
}else{
tableContent[j+1][i]=pageResult.getContent().get(j).getName();
}
}
if(strArr[i].equals("5")){
if(pageResult.getContent().get(j).getCarType()==null){
tableContent[j+1][i]="";
}else{
tableContent[j+1][i]=pageResult.getContent().get(j).getCarType();
}
}
if(strArr[i].equals("6")){
if(pageResult.getContent().get(j).getCarAge()==null){
tableContent[j+1][i]="";
}else{
tableContent[j+1][i]=pageResult.getContent().get(j).getCarAge().toString();
}
}
if(strArr[i].equals("7")){
if(pageResult.getContent().get(j).getMobile()==null){
tableContent[j+1][i]="";
}else{
tableContent[j+1][i]=pageResult.getContent().get(j).getMobile();
}
}
if(strArr[i].equals("8")){
if(pageResult.getContent().get(j).getMiles()==null){
tableContent[j+1][i]="";
}else{
tableContent[j+1][i]=pageResult.getContent().get(j).getMiles().toString();
}
}
if(strArr[i].equals("9")){
if(pageResult.getContent().get(j).getFillDate()==null){
tableContent[j+1][i]="";
}else{
tableContent[j+1][i]=new SimpleDateFormat("yyyy-MM-dd").format(pageResult.getContent().get(j).getFillDate());
}
}
if(strArr[i].equals("10")){
if(pageResult.getContent().get(j).getFillPlace()==null){
tableContent[j+1][i]="";
}else{
tableContent[j+1][i]=pageResult.getContent().get(j).getFillPlace();
}
}
if(strArr[i].equals("11")){
if(pageResult.getContent().get(j).getWorkName()==null){
tableContent[j+1][i]="";
}else{
tableContent[j+1][i]=pageResult.getContent().get(j).getWorkName();
}
}
if(strArr[i].equals("12")){
if(pageResult.getContent().get(j).getWorkMobile()==null){
tableContent[j+1][i]="";
}else{
tableContent[j+1][i]=pageResult.getContent().get(j).getWorkMobile();
}
}
if(strArr[i].equals("13")){
if(pageResult.getContent().get(j).getOldValue()==null){
tableContent[j+1][i]="";
}else{
tableContent[j+1][i]=pageResult.getContent().get(j).getOldValue().toString();
}
}
if(strArr[i].equals("14")){
if(pageResult.getContent().get(j).getNewValue()==null){
tableContent[j+1][i]="";
}else{
tableContent[j+1][i]=pageResult.getContent().get(j).getNewValue().toString();
}
}
}
}
}
// System.out.println(tableContent);
PdfFileExport pdfFileExport = new PdfFileExport();
SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmss");
String onTime = sdf.format(new java.util.Date());
if(tableContent.length==1){
pdfFileExport.exportTableContent("D:/temp/Export/"+onTime+"会员报表PDF文档.pdf", tableContent, tableContent.length,88);
}else{
pdfFileExport.exportTableContent("D:/temp/Export/"+onTime+"会员报表PDF文档.pdf", tableContent, tableContent.length, tableContent.length-1);
}
Runtime.getRuntime().exec("cmd /E:ON /c start "+"D:/temp/Export/"+onTime+"会员报表PDF文档.pdf");
}