diff --git a/yun-admin/src/main/java/net/lab1024/sa/admin/module/word/WordApplicationsController.java b/yun-admin/src/main/java/net/lab1024/sa/admin/module/word/WordApplicationsController.java index 1f94266..41de9ef 100644 --- a/yun-admin/src/main/java/net/lab1024/sa/admin/module/word/WordApplicationsController.java +++ b/yun-admin/src/main/java/net/lab1024/sa/admin/module/word/WordApplicationsController.java @@ -65,18 +65,13 @@ public class WordApplicationsController { byte[] fileContent; String fileName; String contentType; - - if ("pdf".equalsIgnoreCase(format)) { - // 生成PDF文档 - fileContent = wordCertificateService.generateCertificateAsPdf(certificateData); - fileName = "certificate.pdf"; - contentType = "application/pdf"; - } else { + + // 生成Word文档 fileContent = wordCertificateService.generateCertificate(certificateData); fileName = "certificate.docx"; contentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; - } + // 设置文档响应头 response.setContentType(contentType); diff --git a/yun-admin/src/main/java/net/lab1024/sa/admin/module/word/WordCertificateService.java b/yun-admin/src/main/java/net/lab1024/sa/admin/module/word/WordCertificateService.java index 9bb18ab..96467a0 100644 --- a/yun-admin/src/main/java/net/lab1024/sa/admin/module/word/WordCertificateService.java +++ b/yun-admin/src/main/java/net/lab1024/sa/admin/module/word/WordCertificateService.java @@ -5,14 +5,13 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.util.Units; -import org.apache.poi.xwpf.converter.pdf.PdfConverter; -import org.apache.poi.xwpf.converter.pdf.PdfOptions; import org.apache.poi.xwpf.usermodel.ParagraphAlignment; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.*; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDrawing; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STDocProtect; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.util.FileCopyUtils; @@ -45,7 +44,8 @@ public class WordCertificateService { */ public byte[] generateCertificate(CertificateData data) throws Exception { XWPFDocument document = prepareDocument(data); - + // 方法1:设置文档为只读推荐 + document.enforceReadonlyProtection(); // 保存到字节数组 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); document.write(outputStream); @@ -54,20 +54,6 @@ public class WordCertificateService { return outputStream.toByteArray(); } - /** - * 生成PDF格式的证书 - */ - public byte[] generateCertificateAsPdf(CertificateData data) throws Exception { - XWPFDocument document = prepareDocument(data); - - // 转换为PDF - ByteArrayOutputStream pdfOutputStream = new ByteArrayOutputStream(); - PdfConverter.getInstance().convert(document, pdfOutputStream, PdfOptions.create()); - document.close(); - - return pdfOutputStream.toByteArray(); - } - /** * 准备文档(用于Word或PDF生成) */ @@ -118,8 +104,8 @@ public class WordCertificateService { // 添加新内容 XWPFRun run = paragraph.createRun(); run.setText(text); - run.setFontFamily("宋体"); - run.setFontSize(12); + run.setFontFamily("FangSong_GB2312"); + run.setFontSize(16); } } } diff --git a/yun-admin/src/main/resources/templates/certificate_template.docx b/yun-admin/src/main/resources/templates/certificate_template.docx index 79ced41..f10969b 100644 Binary files a/yun-admin/src/main/resources/templates/certificate_template.docx and b/yun-admin/src/main/resources/templates/certificate_template.docx differ