1、引入依赖

<dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13.2</version>
        </dependency>

        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
            <version>2.0.19</version>
        </dependency>

2、代码:

		PdfReader reader = null;
		ByteArrayOutputStream bos = null;
		PdfStamper stamper = null;
		try {
			Resource resource = resourceLoader.getResource("classpath:盖章证明模板.pdf");
			reader = new PdfReader(resource.getInputStream());
			bos = new ByteArrayOutputStream();
			stamper = new PdfStamper(reader, bos);
			//这个form就是pdf里面的表单key就是pdf的键 value 就是往里面要放的值
			BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
			AcroFields form = stamper.getAcroFields();
			Set<Map.Entry<String, String>> entries = map.entrySet();
			for (Map.Entry<String, String> entry : entries) {
				form.setFieldProperty(entry.getKey(), "textfont", bf, null);
				form.setField(entry.getKey(), entry.getValue());
			}
			//true代表生成的PDF文件不可编辑
			stamper.setFormFlattening(true);
			stamper.close();
			DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
			String timeString = formatter.format(LocalDateTime.now());
			String fileName = "涉敏载体集中销毁证明" + timeString +".pdf";
			response.reset();
			response.setContentType("application/pdf;charset=UTF-8");
			response.setHeader("Content-Disposition", "inline;filename=" + URLEncoder.encode(fileName, "UTF-8"));
			OutputStream out = response.getOutputStream();

			//加载pdf
			PDDocument document = PDDocument.load(bos.toByteArray());
			//获得文档属性对象
			PDDocumentInformation info = document.getDocumentInformation();
			//修改标题属性  这个标题会被展示
			info.setTitle(fileName);
			document.setDocumentInformation(info);
			//修改完直接输出到响应体中
			document.save(out);
			document.close();
			out.close();
		} catch (Exception e) {
			log.error("pdf预览发生错误:{}", e.getMessage());
		}
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐