|
@@ -28,6 +28,7 @@ public class CreatePrintPdfUtil {
|
|
|
*
|
|
|
* @param pdfFillDto 签到表数据
|
|
|
* @param destFileName 文件名
|
|
|
+ * @param diallel 是否双列显示
|
|
|
*/
|
|
|
public File createSignPdf(PdfSignDto pdfFillDto, String destFileName, Boolean diallel) throws Exception {
|
|
|
|
|
@@ -43,7 +44,7 @@ public class CreatePrintPdfUtil {
|
|
|
pdfWriter = PdfWriter.getInstance(document, fos);
|
|
|
|
|
|
//3、设置pdf页眉和页脚和水印
|
|
|
- MyHeaderFooter headerFooter = new MyHeaderFooter();
|
|
|
+ MyHeaderFooter headerFooter = new MyHeaderFooter(pdfFillDto.getPackageNumber());
|
|
|
pdfWriter.setPageEvent(headerFooter);
|
|
|
|
|
|
// 3:打开文档
|
|
@@ -117,18 +118,15 @@ public class CreatePrintPdfUtil {
|
|
|
// 空格
|
|
|
Paragraph blank = new Paragraph(" ");
|
|
|
// 标题table
|
|
|
- PdfPTable titleTable = PdfFillUtils.createTable(new float[]{33, 34, 33});
|
|
|
- titleTable.addCell(PdfFillUtils.createCell("", null, null, Element.ALIGN_CENTER, 15, 3, 1));
|
|
|
- titleTable.addCell(PdfFillUtils.createCell(pdfFillDto.getTitle(), PdfFillUtils.textFont14, null, Element.ALIGN_CENTER, 15, 3, 1));
|
|
|
- // 条码
|
|
|
- Image code128Image = PdfFillUtils.createBarcode(pdfWriter, pdfFillDto.getPackageNumber(), false, null, null);
|
|
|
- code128Image.scalePercent(100);
|
|
|
- titleTable.addCell(PdfFillUtils.createCell(code128Image, 50f, Element.ALIGN_RIGHT, 15, 3, 1));
|
|
|
- document.add(titleTable);
|
|
|
+// PdfPTable titleTable = PdfFillUtils.createTable(new float[]{100});
|
|
|
+// titleTable.addCell(PdfFillUtils.createCell(pdfFillDto.getTitle(), PdfFillUtils.textFont16, null, Element.ALIGN_CENTER, 15, 3, 1));
|
|
|
+// titleTable.getDefaultCell().setFixedHeight(50f);
|
|
|
+// document.add(titleTable);
|
|
|
|
|
|
|
|
|
// 基础信息表格
|
|
|
PdfPTable basicTable = PdfFillUtils.createTable(6);
|
|
|
+ basicTable.addCell(PdfFillUtils.createTitleCell(pdfFillDto.getTitle(), PdfFillUtils.textFont16, 60f, 15, 1, 6));
|
|
|
List<Map<String, String>> basicPlate = pdfFillDto.getBasicPlate();
|
|
|
for (Map<String, String> stringMap : basicPlate) {
|
|
|
basicTable.addCell(PdfFillUtils.createCell(stringMap.get("name") + ":" + stringMap.get("value"), PdfFillUtils.textFont11, null, Element.ALIGN_LEFT, 0, 1, 3));
|
|
@@ -215,7 +213,8 @@ public class CreatePrintPdfUtil {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ //将表格的第一行设置为表头 让它在每一页都显示出来
|
|
|
+ studentTable.setHeaderRows(1);
|
|
|
document.add(studentTable);
|
|
|
|
|
|
document.add(blank);
|
|
@@ -410,6 +409,12 @@ public class CreatePrintPdfUtil {
|
|
|
* 添加页眉、页脚
|
|
|
*/
|
|
|
public static class MyHeaderFooter extends PdfPageEventHelper {
|
|
|
+ private String packageCode;
|
|
|
+
|
|
|
+ public MyHeaderFooter(String packageCode) {
|
|
|
+ this.packageCode = packageCode;
|
|
|
+ }
|
|
|
+
|
|
|
// 总页数
|
|
|
PdfTemplate totalPage;
|
|
|
|
|
@@ -423,27 +428,58 @@ public class CreatePrintPdfUtil {
|
|
|
// 一页加载完成触发,写入页眉和页脚
|
|
|
@Override
|
|
|
public void onEndPage(PdfWriter writer, Document document) {
|
|
|
- PdfPTable table = new PdfPTable(3);
|
|
|
+ // 添加页眉
|
|
|
+ addHeader(writer);
|
|
|
+ // 添加页脚
|
|
|
+ addFooter(writer);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void addHeader(PdfWriter writer) {
|
|
|
+ String packageNumber = packageCode.concat(String.valueOf(writer.getPageNumber()));
|
|
|
+ PdfPTable table = new PdfPTable(2);
|
|
|
+ try {
|
|
|
+ table.setTotalWidth(PageSize.A4.getWidth() - 80);
|
|
|
+ table.setWidths(new int[]{80, 20});
|
|
|
+ table.setLockedWidth(true);
|
|
|
+ table.getDefaultCell().setFixedHeight(0f);
|
|
|
+// table.getDefaultCell().setBorder(Rectangle.NO_BORDER);
|
|
|
+// table.getDefaultCell().setBorderWidth(0.5f);
|
|
|
+
|
|
|
+ table.addCell(PdfFillUtils.createCell("", null, null, Element.ALIGN_CENTER, 15, 1, 1));
|
|
|
+ table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
|
|
|
+ // 条码
|
|
|
+ Image code128Image = PdfFillUtils.createBarcode(writer, packageNumber, false, null, null);
|
|
|
+ code128Image.scalePercent(100);
|
|
|
+ table.addCell(PdfFillUtils.createCellBarCode(code128Image, 30f, Element.ALIGN_RIGHT, 15, 1, 1));
|
|
|
+ // 页眉
|
|
|
+ table.writeSelectedRows(0, -1, 40, PageSize.A4.getHeight() - 5, writer.getDirectContent());
|
|
|
+ } catch (Exception de) {
|
|
|
+ throw new ExceptionConverter(de);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void addFooter(PdfWriter writer) {
|
|
|
+ PdfPTable table = new PdfPTable(2);
|
|
|
try {
|
|
|
table.setTotalWidth(PageSize.A4.getWidth() - 80);
|
|
|
- table.setWidths(new int[]{24, 24, 3});
|
|
|
+ table.setWidths(new int[]{50, 50});
|
|
|
table.setLockedWidth(true);
|
|
|
- table.getDefaultCell().setFixedHeight(-10);
|
|
|
- table.getDefaultCell().setBorder(Rectangle.BOTTOM);
|
|
|
+ table.getDefaultCell().setFixedHeight(-10f);
|
|
|
+ table.getDefaultCell().setBorder(Rectangle.NO_BORDER);
|
|
|
table.getDefaultCell().setBorderWidth(0.5f);
|
|
|
|
|
|
- table.addCell(new Paragraph("", PdfFillUtils.textFont8));// 可以直接使用addCell(str),不过不能指定字体,中文无法显示
|
|
|
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
|
|
|
table.addCell(new Paragraph("第" + writer.getPageNumber() + "页 /", PdfFillUtils.textFont8));
|
|
|
// 总页数
|
|
|
PdfPCell cell = new PdfPCell(Image.getInstance(totalPage));
|
|
|
- cell.setBorder(Rectangle.BOTTOM);
|
|
|
+ cell.setBorder(Rectangle.NO_BORDER);
|
|
|
table.addCell(cell);
|
|
|
// 将页眉写到document中,位置可以指定,指定到下面就是页脚
|
|
|
// 页眉
|
|
|
- table.writeSelectedRows(0, -1, 40, PageSize.A4.getHeight() - 20, writer.getDirectContent());
|
|
|
+// table.writeSelectedRows(0, -1, 40, PageSize.A4.getHeight() - 10, writer.getDirectContent());
|
|
|
// 页脚
|
|
|
-// table.writeSelectedRows(0, -1, 40, 40, writer.getDirectContent());
|
|
|
+ table.writeSelectedRows(0, -1, 40, 20, writer.getDirectContent());
|
|
|
} catch (Exception de) {
|
|
|
throw new ExceptionConverter(de);
|
|
|
}
|
|
@@ -519,7 +555,7 @@ public class CreatePrintPdfUtil {
|
|
|
|
|
|
// 考生信息
|
|
|
List<Map<String, String>> studentPlate = new ArrayList<>();
|
|
|
- for (int i = 0; i < 61; i++) {
|
|
|
+ for (int i = 0; i < 150; i++) {
|
|
|
Map<String, String> studentMap = new HashMap<>();
|
|
|
String seq = String.valueOf(i + 1);
|
|
|
studentMap.put("seq", seq);
|
|
@@ -577,8 +613,8 @@ public class CreatePrintPdfUtil {
|
|
|
|
|
|
try {
|
|
|
CreatePrintPdfUtil createPrintPdfUtil = new CreatePrintPdfUtil();
|
|
|
- createPrintPdfUtil.createSignPdf(pdfFillDto, "D:/sign.pdf", false);
|
|
|
- createPrintPdfUtil.createPackagePdf(pdfPackageDto, "D:/package.pdf");
|
|
|
+ createPrintPdfUtil.createSignPdf(pdfFillDto, "/Users/xiaofei/sign.pdf", true);
|
|
|
+// createPrintPdfUtil.createPackagePdf(pdfPackageDto, "D:/package.pdf");
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|