try(ByteArrayOutputStream outputStream = new ByteArrayOutputStream()){PdfWriter writer = new PdfWriter(outputStream, new WriterProperties().setFullCompressionMode(true));PdfDocument pdfDoc = new PdfDocument(writer);Document document = new Document(pdfDoc, PageSize.LETTER);document.setMargins(5, 15, 36, 15);// 添加内容 ...Table table = .... ; // 创建Table对象document.add(table);//document.close();return outputStream.toByteArray() ;
}
在pdf每页顶部固定位置添加页眉
int numberOfPages = pdfDoc.getNumberOfPages();LocalDate now = LocalDate.now();String dateContent = "Date : " + now.getYear()+ "/"+ now.getMonthValue() +"/"+ now.getDayOfMonth() ;Paragraph dateParagraph = new Paragraph(dateContent).setFontSize(7).setFontColor(ColorConstants.BLACK);for (int i = 1; i <= numberOfPages; i++) {String pageContent = "Page: "+ i +" of " + numberOfPages ;Paragraph pageParagraph = new Paragraph( pageContent).setFontSize(7).setFontColor(ColorConstants.BLACK);Rectangle pageSize = pdfDoc.getPage(i).getPageSize();float x = pageSize.getWidth() * 0.6f -2;float y = pageSize.getTop() - 12;doc.showTextAligned(pageParagraph, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);doc.showTextAligned(dateParagraph, x + 70, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);}
合并pdf
// part1Bytes、part2Bytes 为两个pdf文件的字节数组
try(ByteArrayInputStream part1InputSteam = new ByteArrayInputStream(part1Bytes);ByteArrayInputStream part2InputStream = new ByteArrayInputStream(part2Bytes)){// Create PdfDocument object of each pdfPdfDocument part1Doc = new PdfDocument(new PdfReader(part1InputSteam));PdfDocument part2Doc = new PdfDocument(new PdfReader(part2InputStream));// merger.merge(part1Doc, 1, part1Doc.getNumberOfPages());merger.merge(part2Doc, 1, part2Doc.getNumberOfPages());// Source documents can be closed implicitly after merging,// by passing true to the setCloseSourceDocuments(boolean) methodpart1Doc.close();part2Doc.close();
}