您可以使用 iText 阅读您使用 jasper 报告创建的 pdf。要么将 pdf 作为 byteArray 读取。然后使用它使用 itext PdfReader
byte [] dataArray = JasperExportManager.exportReportToPdf(jasperPrint);
PdfReader pdfReader = new PdfReader(dataArray);
或从某个位置读取已写入的 pdf
JasperExportManager.exportReportToPdfFile(jasperPrint,pdfFileLocation);
PdfReader pdfReader = new PdfReader(pdfFileLocation);
我希望下面的 sn-p 可以帮助我从哪里读取文件并添加水印,删除现有文件并写入新文件。
ByteArrayOutputStream baos = new ByteArrayOutputStream();
BaseFont bf = null;
PdfBoolean pdfBoolean_YES = new PdfBoolean(true);
PdfReader pdfReader = new PdfReader(pdfFileLocation);
PdfStamper pdfStamper = new PdfStamper(pdfReader, baos);
PdfContentByte contentunder = pdfStamper.getUnderContent(1);
contentunder.saveState();
contentunder.setColorFill(new Color(200, 200, 200));
contentunder.beginText();
bf = BaseFont.createFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
contentunder.setFontAndSize(bf, 90);
contentunder.showTextAligned(Element.ALIGN_MIDDLE, " WaterMark Content", 200, 400, 45);
contentunder.endText();
contentunder.restoreState();
// We could stack those ViewerPreferences using '|' ... :)
pdfStamper.addViewerPreference(PdfName.HIDETOOLBAR, pdfBoolean_YES);
pdfStamper.addViewerPreference(PdfName.HIDEMENUBAR, pdfBoolean_YES);
//pdfStamper.addViewerPreference(PdfName.HIDEWINDOWUI, pdfBoolean_YES);
pdfReader.close();
pdfStamper.close();
//deleting existing file
FileUtil.delete(pdfFileLocation);
FileOutputStream fos = new FileOutputStream(pdfFileLocation);
baos.writeTo(fos);
fos.flush();
//close streams
baos.close();
fos.close();