package com.exgrain.common.service;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.commons.collections.map.HashedMap;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;
/**
* <P>替换docx文档内容service 动态生成表格</P>
*
*/
public class GenerateDynamicDocxFileService {
public static <E> void main(String[] args) throws DocumentException, IOException {
pdfXX();
}
public static Paragraph createParagraph(String string, Font font, int alignment, float spacingBefore) {
Paragraph paragraph = new Paragraph(string, font);
paragraph.setAlignment(alignment);
paragraph.setSpacingBefore(spacingBefore);
return paragraph;
}
public static PdfPCell createPdfPCell(String string, Font font, int colspan, int rowspan, float fixedHeight) {
PdfPCell pdfPCell = new PdfPCell(new Paragraph(string, font));
pdfPCell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
pdfPCell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
pdfPCell.setColspan(colspan);
pdfPCell.setRowspan(rowspan);
pdfPCell.setFixedHeight(fixedHeight * rowspan);
return pdfPCell;
}
public static void pdfXX() throws DocumentException, IOException {
String targetPath = "G:\\pdf\\aaa.pdf";
File pdfFile = new File(targetPath);
pdfFile.setWritable(true, false);
OutputStream out = new FileOutputStream(targetPath);
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, 12, Font.BOLD);
Font cellContent = new Font(bfChinese, 11, Font.NORMAL);
PdfWriter.getInstance(pdfDoc, out);
pdfDoc.open();
Paragraph docTitle = createParagraph("xxxxxxxxxxxxxxxxx告知单\n", title, Element.ALIGN_CENTER, 20);
pdfDoc.add(docTitle);
docTitle = createParagraph("编号:" + "11123322211" + "\n" + "", cellContent, Element.ALIGN_RIGHT, 20);
pdfDoc.add(docTitle);
docTitle = createParagraph("致:" + "xxxxxxxxxxxxxxxxxxxxxxxxx公司" + " 公司" + "\n" + "", cellContent,
Element.ALIGN_LEFT, 20);
pdfDoc.add(docTitle);
String xxxxxxxx = " 嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111:"
+ "\n";
docTitle = new Paragraph(xxxxxxxx, cellContent);
docTitle.setAlignment(Element.ALIGN_LEFT);
docTitle.setSpacingBefore(20);
pdfDoc.add(docTitle);
int size = 35;
int widths[] = { 40, 40, 25, 20, 25, 20, 20, 20 };
PdfPTable baseTable = new PdfPTable(8);
baseTable.setWidthPercentage(100);
baseTable.setSpacingBefore(10);
baseTable.setWidths(widths);
PdfPCell baseTableCell = null;
baseTableCell = createPdfPCell("编号", cellTitle, 1, 1, size);
baseTable.addCell(baseTableCell);
baseTableCell = createPdfPCell("订单编号", cellTitle, 1, 1, size);
baseTable.addCell(baseTableCell);
baseTableCell = createPdfPCell("签订时间", cellTitle, 1, 1, size);
baseTable.addCell(baseTableCell);
baseTableCell = createPdfPCell("合同数量", cellTitle, 1, 1, size);
baseTable.addCell(baseTableCell);
baseTableCell = createPdfPCell("保证金时间", cellTitle, 1, 1, size);
baseTable.addCell(baseTableCell);
baseTableCell = createPdfPCell("支付数量", cellTitle, 1, 1, size);
baseTable.addCell(baseTableCell);
baseTableCell = createPdfPCell("数量", cellTitle, 1, 1, size);
baseTable.addCell(baseTableCell);
baseTableCell = createPdfPCell("服务费", cellTitle, 1, 1, size);
baseTable.addCell(baseTableCell);
// ----数据 S
Map<String, String> map = new HashedMap();
map.put("aa", "xxxxxxxxxxxxxxxx");
map.put("bb", "aaaaaaaaaaaaa");
map.put("cc", "2020/06/15");
map.put("dd", "1314");
map.put("ee", "2020/06/15");
map.put("ff", "100");
map.put("gg", "2288");
map.put("hh", "200");
List<Map> list = new ArrayList<Map>();
list.add(map);
list.add(map);
list.add(map);
list.add(map);
list.add(map);
list.add(map);
list.add(map);
// ----数据 E
int rows = list.size();
System.out.println((String) list.get(0).get("aa"));
baseTableCell = createPdfPCell((String) list.get(0).get("aa"), cellContent, 1, rows, size);
baseTable.addCell(baseTableCell);
baseTableCell = createPdfPCell((String) list.get(0).get("bb"), cellContent, 1, rows, size);
baseTable.addCell(baseTableCell);
baseTableCell = createPdfPCell((String) list.get(0).get("cc"), cellContent, 1, rows, size);
baseTable.addCell(baseTableCell);
baseTableCell = createPdfPCell((String) list.get(0).get("dd"), cellContent, 1, rows, size);
baseTable.addCell(baseTableCell);
for (int i = 0, length = list.size(); i < length; i++) {
Map tempM = list.get(i);
baseTableCell = createPdfPCell((String) list.get(0).get("ee"), cellContent, 1, 1, size);
baseTable.addCell(baseTableCell);
baseTableCell = createPdfPCell((String) list.get(0).get("ff"), cellContent, 1, 1, size);
baseTable.addCell(baseTableCell);
baseTableCell = createPdfPCell((String) list.get(0).get("gg"), cellContent, 1, 1, size);
baseTable.addCell(baseTableCell);
baseTableCell = createPdfPCell((String) list.get(0).get("hh"), cellContent, 1, 1, size);
baseTable.addCell(baseTableCell);
}
pdfDoc.add(baseTable);
Paragraph docDown = createParagraph(" xxxxxxxxxxxxxxxxxxx公司" + "\n" + "", cellContent, Element.ALIGN_RIGHT,
20);
pdfDoc.add(docDown);
pdfDoc.close();
}
}