public static void main(String[] args) { File file = new File("C:\\Users\\ZHOULIJIA\\Desktop\\QR-B.LA009-01 冷冻离心机使用和维护记录表1.3(1).docx"); FileOutputStream os; File outFile = new File("C:\\Users\\ZHOULIJIA\\Desktop\\受控文件.pdf"); File hcFile = new File("C:\\Users\\ZHOULIJIA\\Desktop\\受控文件s.pdf"); File file2 = new File("xx.png"); File file3 = new File("xXx.png"); try { //转后pdf InputStream is = Files.newInputStream(outFile.toPath()); //合成后的文件 FileOutputStream outputStream = new FileOutputStream(hcFile); PdfReader reader = new PdfReader(is); PdfStamper stamper = new PdfStamper(reader, outputStream); //横竖版测试 PdfDocument pdf = new PdfDocument(); pdf.loadFromFile("C:\\Users\\ZHOULIJIA\\Desktop\\受控文件.pdf"); //获取第一页 PdfPageBase page = pdf.getPages().get(0); //获取第一页页面宽度、高度 float pointWidth = (float) page.getSize().getWidth(); float pointHeight = (float) page.getSize().getHeight(); //获取总页数 PdfReader pdfReader = new PdfReader("C:\\Users\\ZHOULIJIA\\Desktop\\受控文件.pdf"); int pdfPage = pdfReader.getNumberOfPages(); for (int i = 1; i <= pdfPage ; i++) { //将签名图片放在pdf文件的每一页 PdfContentByte over = stamper.getOverContent(i); //签名图片 File file1 = new File("C:\\Users\\ZHOULIJIA\\Desktop\\电子签章-20231128\\电子签章-20231128\\作废xx.png"); File file22 = new File("C:\\Users\\ZHOULIJIA\\Desktop\\电子签章-20231128\\电子签章-20231128\\受控文件xx.png"); InputStream inputStreamss = new ByteArrayInputStream(FileUtils.readFileToByteArray(file1)); InputStream inputStreamss2 = new ByteArrayInputStream(FileUtils.readFileToByteArray(file22)); // 从输入流读取图片数据 BufferedImage image = ImageIO.read(inputStreamss); BufferedImage image2 = ImageIO.read(inputStreamss2); ImageIO.write(image, "png", file2); ImageIO.write(image2, "png", file3); // inputStream 转 image Image contractSealImg = Image.getInstance("xx.png"); Image contractSealImg2 = Image.getInstance("xXx.png"); over.saveState(); PdfGState pdfGState = new PdfGState(); //给图片设置透明度 pdfGState.setFillOpacity(1.0F); over.setGState(pdfGState); over.saveState(); if(pointWidth>pointHeight){ contractSealImg.setAbsolutePosition(600, 500); //设置图片位置 contractSealImg.scaleAbsolute(80, 30); //设置图片大小 contractSealImg2.setAbsolutePosition(683, 500); contractSealImg2.scaleAbsolute(80, 30); }else{ contractSealImg.setAbsolutePosition(400, 802); //设置图片位置 contractSealImg.scaleAbsolute(80, 30); //设置图片大小 contractSealImg2.setAbsolutePosition(483, 802); contractSealImg2.scaleAbsolute(80, 30); } //将图片添加到pdf文件 over.addImage(contractSealImg); over.addImage(contractSealImg2); over.restoreState(); } stamper.close(); reader.close(); outputStream.close(); is.close(); pdfReader.close(); } catch (Exception e) { e.printStackTrace(); }finally { outFile.delete(); file2.delete(); file3.delete(); } }
jar: