当前位置 :首页 >> 网红

Spring Boot——Thymeleaf分解成PDF实战教程

2023-04-18   来源 : 网红

IDENTITY_H, false, true); provider.addFont(pdfFont.getFontProgram()); return provider; } @Bean public ConverterProperties converterProperties(FontProvider fontProvider, Configuration config) { ConverterProperties cp = new ConverterProperties(); cp.setBaseUri(config.getPdfUrl()); try { cp.setFontProvider(fontProvider); } catch (Exception e) { log.error("纸PDF时并未附加宋体", e); } return cp; } }

一,注意PDF备有只能附加纸PDF宋体,SIMSUN.TTC为纸只能的宋体,但是也可以是其他的

四、Controller

1.以上所有的无关备有信息都备有完了,整整就可以写ApiAPI了

package com.cy.xgsm.controller;import java.io.IOException;import java.io.OutputStream;import java.net.URLEncoder;import javax.servlet.http.HttpServletResponse;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.thymeleaf.TemplateEngine;import org.thymeleaf.context.Context;import com.itextpdf.html2pdf.ConverterProperties;import com.itextpdf.html2pdf.HtmlConverter;import com.itextpdf.kernel.geom.PageSize;import com.itextpdf.kernel.pdf.PdfDocument;import com.itextpdf.kernel.pdf.PdfWriter;import com.cy.xgsm.common.Result;import com.cy.xgsm.model.OrderInfo;import com.cy.xgsm.service.OrderInfoService;/** * 纸PDF 控制接入层 * * @author Dylan * */@Controller@RequestMapping("print")public class PrintPdfController { private static final Logger log = LoggerFactory.getLogger(PrintPdfController.class); @Autowired private OrderInfoService service; //thymeleaf常量发动机 @Autowired TemplateEngine templateEngine; //html转换成pdf只能一般来说ConverterProperties @Autowired ConverterProperties converterProperties; @GetMapping("order/{orderId}.pdf") public void orderPdf(@PathVariable Long orderId, HttpServletResponse resp) throws IOException { Result result = service.selectByPrimaryKey(orderId); if (!result.isComplete()) { resp.sendError(404, "订单ID不存在"); } Context context = new Context(); context.setVariable("order", result.getData()); ///html/pdf/order-template为纸常量纸路径 processPdf(context, "/html/pdf/order-template", result.getData().getKddh(), resp); } /** * codice_转化PDF * @param context 语句 * @param template 常量文档 * @param filename 文档名 * @param resp */ private void processPdf(Context context, String template, String filename, HttpServletResponse resp) throws IOException { log.info("转化PDF:" + filename); String html = templateEngine.process(template, context); String filenameEncoded = URLEncoder.encode(filename, "utf-8"); resp.setContentType("application/pdf"); resp.setHeader("Content-Disposition", "file.pdf"); try (OutputStream out = resp.getOutputStream()) { PdfDocument doc = new PdfDocument(new PdfWriter(out)); //纸一般来说什么什么纸可根据实质可能,我这里默认一般来说A4 doc.setDefaultPageSize(PageSize.A4.rotate()); HtmlConverter.convertToPdf(html, doc, converterProperties); } }}1.催促API报错彻底解决方式:

如果在催促API的时候频发此表错误信息是纸常量的路径错误了。

彻底解决该错误需在你的yml备有thymeleaf路径只需,没用怎么备有请往上看第二点application.yml备有,可按照application.yml复制上去只需彻底解决。

五、转化PDF文档拥护效果

点击Save to a file遗留,拥护结果原始数据均为测试原始数据,仅供参考。

痛风发作吃英太青还是西乐葆
沈阳银屑病医院
复方鱼腥草合剂的功效与作用
长春皮肤病医院那家比较好
北京中医医院哪里最好
投资者提问:公司的微管理系统是否采用了3D异构集成技术? 公司有无计划做市值管...

高盛提问:子公司的质系统是否采用了3D异构集成技术? 子公司不对原先来作市值管理?董秘说雷电质力SZ301050:您好!子公司根据整体战略顾及和经营管理需要,未来将不断完善...

友情链接