iText5 构建pdf

//构建文档
Document document = new Document();
//设置纸张类型
document.setPageSize(PageSize.A4);
//document.setPageSize(PageSize.A4.rotate());设置纸张横向
File file = new File(outPdf);
OutputStream os = new FileOutputStream(file);
PdfWriter.getInstance(document,os);
document.open();

//设置字体,使用iTextAsian.jar中的字体,也可以使用windows字体或者资源字体
BaseFont baseFont = BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H", false);
com.itextpdf.text.Font font10 = new com.itextpdf.text.Font(baseFont,10);
com.itextpdf.text.Font font12 = new com.itextpdf.text.Font(baseFont,12);

//构建pdf中表格列宽以及列数
float[] widths = { 0.3f,0.3f,0.3f,0.3f, 0.3f, 0.3f};
PdfPTable table = new PdfPTable(widths);
//设置表宽度
table.setWidthPercentage(100);
//设置表格前间距
table.setSpacingBefore(30);

//构建pdf内容
PdfPCell row2Cell01 = new PdfPCell(new Paragraph("测试",font12));
//合并列
row2Cell01.setColspan(6);
//设置单元格最小高度
row2Cell01.setMinimumHeight(30);
//设置边框
row2Cell01.setBorder(0);
//设置水平居中
row2Cell01.setHorizontalAlignment(Element.ALIGN_CENTER);
//设置垂直居中
row2Cell01.setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(row2Cell01);

//设置打印列列名
PdfPCell row5Cell02 = new PdfPCell(new Paragraph("第一列",font8));
row5Cell02.setHorizontalAlignment(Element.ALIGN_CENTER);
row5Cell02.setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(row5Cell02);
PdfPCell row5Cell03 = new PdfPCell(new Paragraph("第二列",font8));
row5Cell03.setHorizontalAlignment(Element.ALIGN_CENTER);
row5Cell03.setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(row5Cell03);
PdfPCell row5Cell04 = new PdfPCell(new Paragraph("第三列",font8));
row5Cell04.setHorizontalAlignment(Element.ALIGN_CENTER);
row5Cell04.setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(row5Cell04);
PdfPCell row3Cell01 = new PdfPCell(new Paragraph("第四列",font8));
row3Cell01.setHorizontalAlignment(Element.ALIGN_CENTER);
row3Cell01.setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(row3Cell01);
PdfPCell row4Cell01 = new PdfPCell(new Paragraph("第五列",font8));
row4Cell01.setHorizontalAlignment(Element.ALIGN_CENTER);
row4Cell01.setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(row4Cell01);
PdfPCell row5Cell01 = new PdfPCell(new Paragraph("第六列",font8));
row5Cell01.setHorizontalAlignment(Element.ALIGN_CENTER);
row5Cell01.setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(row5Cell01);

//获取打印集合数据
List<InvWriteOffModel> pageList = baseMapper.selectWriteOffInfo(invWriteOffModel);

//将集合中数据加到对应表格中
for (int i = 0; i < pageList.size(); i++) {
                InvWriteOffModel writeOffModel = pageList.get(i);
                PdfPCell cellX5 = new PdfPCell(new Paragraph(writeOffModel.getMarketType(),font8));
                cellX5.setVerticalAlignment(Element.ALIGN_CENTER);
                cellX5.setHorizontalAlignment(Element.ALIGN_MIDDLE);
                table.addCell(cellX5);
                PdfPCell cellX6 = new PdfPCell(new Paragraph(String.valueOf(writeOffModel.getMarketNum()),font8));
                cellX6.setVerticalAlignment(Element.ALIGN_CENTER);
                cellX6.setHorizontalAlignment(Element.ALIGN_MIDDLE);
                table.addCell(cellX6);
                PdfPCell cellX7 = new PdfPCell(new Paragraph(String.valueOf(writeOffModel.getMarketAmount()),font8));
                cellX7.setVerticalAlignment(Element.ALIGN_CENTER);
                cellX7.setHorizontalAlignment(Element.ALIGN_MIDDLE);
                table.addCell(cellX7);
                PdfPCell cellX2 = new PdfPCell(new Paragraph(writeOffModel.getDayType(),font8));
                cellX2.setVerticalAlignment(Element.ALIGN_CENTER);
                cellX2.setHorizontalAlignment(Element.ALIGN_MIDDLE);
                table.addCell(cellX2);
                PdfPCell cellX3 = new PdfPCell(new Paragraph(String.valueOf(writeOffModel.getDayNum()),font8));
                cellX3.setVerticalAlignment(Element.ALIGN_CENTER);
                cellX3.setHorizontalAlignment(Element.ALIGN_MIDDLE);
                table.addCell(cellX3);
                PdfPCell cellX4 = new PdfPCell(new Paragraph(String.valueOf(writeOffModel.getDayAmount()),font8));
                cellX4.setVerticalAlignment(Element.ALIGN_CENTER);
                cellX4.setHorizontalAlignment(Element.ALIGN_MIDDLE);
                table.addCell(cellX4);
}

//把表格添加到文档中
document.add(table);
//关闭文档
document.close();
//关闭流
os.close();

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要在使用iTextPDF合并PDF后添加签字域,您可以按照以下步骤进行操作: 1. 首先,确保您已经在项目中添加了iTextPDF库。您可以通过在项目的构建路径中添加适当的依赖项或手动将库文件添加到项目中来实现。 2. 创建一个新的PDF文档对象来合并PDF文件。您可以使用`PdfReader`类来读取现有的PDF文件,并使用`PdfCopy`类来创建一个新的合并后的PDF文档。 ```java PdfCopy copy = new PdfCopy(document, outputStream); document.open(); ``` 3. 遍历每个要合并的PDF文件,并将其添加到新的PDF文档中。您可以使用`PdfImportedPage`类将现有的PDF页面添加到目标文档中。 ```java PdfReader reader = new PdfReader(inputFilePath); int pageCount = reader.getNumberOfPages(); for (int i = 0; i < pageCount; i++) { PdfImportedPage page = copy.getImportedPage(reader, i + 1); copy.addPage(page); } ``` 4. 在合并后的PDF文档中添加签字域。您可以使用`AcroFields`类来获取合并后的文档中的表单字段,并使用`setFieldProperty`方法设置签字域的属性。 ```java AcroFields fields = copy.getAcroFields(); fields.setFieldProperty("signatureField", "setflags", PdfFormField.FLAGS_REQUIRED, null); ``` 在上面的示例中,"signatureField"是签字域的名称,您可以将其替换为您实际使用的签字域名称。 5. 最后,保存合并后的PDF文档。 ```java copy.close(); document.close(); ``` 请注意,您还可以根据需要设置其他签字域属性,如位置、样式和验证规则等。 希望这可以帮助到您!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值