From 07d80398aebd555f3d37736bbd5b092ef539bc06 Mon Sep 17 00:00:00 2001 From: hejinbo Date: Wed, 29 Nov 2023 21:16:38 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=AD=E9=9F=B3=E8=BD=AC=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/common/utils/PdfUtils.java | 42 ++++++++++--------- .../service/impl/VideoServiceImpl.java | 5 ++- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/PdfUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/PdfUtils.java index 1dab11c..328d5e0 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/PdfUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/PdfUtils.java @@ -4,40 +4,56 @@ import com.documents4j.api.DocumentType; import com.documents4j.api.IConverter; import com.documents4j.job.LocalConverter; import com.itextpdf.text.Document; +import com.itextpdf.text.Font; import com.itextpdf.text.PageSize; +import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfWriter; +import com.itextpdf.tool.xml.XMLWorkerFontProvider; import com.itextpdf.tool.xml.XMLWorkerHelper; +import com.ruoyi.common.config.RuoYiConfig; +import com.tencentcloudapi.teo.v20220901.models.CC; +import lombok.extern.slf4j.Slf4j; import java.io.*; import java.nio.charset.Charset; import java.nio.file.Files; +import static cn.hutool.core.util.ClassLoaderUtil.getClassLoader; + /** * @author wangqiong * @description pdf转换工具类 * @date 2023-11-28 15:20 */ +@Slf4j public class PdfUtils { - /** + /** * 将html字符串转为pdf * @param pdfFilePath 保存的路径 * @param htmlcontent:必须是完整的html格式,比如123 */ - public static boolean htmlStringConvertToPDF(String pdfFilePath, String htmlcontent) { + public boolean htmlStringConvertToPDF(String pdfFilePath, String htmlcontent) { Document document = new Document(); PdfWriter writer = null; try { - if(!new File(pdfFilePath).exists()){ - new File(pdfFilePath).createNewFile(); - } +// if(!new File(pdfFilePath).exists()){ +// new File(pdfFilePath).createNewFile(); +// } writer = PdfWriter.getInstance(document, new FileOutputStream(pdfFilePath)); // 设置底部距离60,解决重叠问题 + document.setPageSize(PageSize.A4); document.setMargins(50, 45, 50, 60); document.setMarginMirroring(false); document.open(); - XMLWorkerHelper.getInstance().parseXHtml(writer, document, new ByteArrayInputStream(htmlcontent.getBytes("UTF-8")), null, Charset.forName("UTF-8")); + // 解决PDF中文不显示 + String fontPath = "/D:/simsun.ttf"; //字体文件路径 + XMLWorkerFontProvider provider = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS); + provider.register(fontPath);//注册字体 + log.error("注册字体"); + XMLWorkerHelper.getInstance().parseXHtml(writer, document, new ByteArrayInputStream(htmlcontent.getBytes("UTF-8")), Charset.forName("UTF-8"), provider); } catch (Exception e) { + log.error("htmlStringConvertToPDF error", e.getMessage()); return false; } finally { if (null != document) { @@ -131,18 +147,4 @@ public class PdfUtils { return true; } - public static void main(String [] args) { - try { - - String pdfFile = "D:\\test13.pdf"; - String htmlContent1 = "

夫士大夫士大夫发

会见韩国机构行家

地方鬼地方鬼地方三个广泛的

"; - String htmlContent = "" + "

夫士大夫士大夫发

会见韩国机构行家

地方鬼地方鬼地方三个广泛的

"; - String htmlContent2 = "

夫士大夫士大夫发

会见韩国机构行家

地方鬼地方鬼地方三个广泛的

"; - - htmlStringConvertToPDF(pdfFile,htmlContent2); -// parseHtml2PdfByFilePath(pdfFile,htmlFile); - } catch (Exception e) { - e.printStackTrace(); - } - } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/VideoServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/VideoServiceImpl.java index b3b6e9b..3d8b731 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/VideoServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/VideoServiceImpl.java @@ -329,9 +329,10 @@ public class VideoServiceImpl implements VideoService { } catch (IOException e) { throw new RuntimeException(e); } - String htmlContent = "" +reservedConferenceVO.getHtmlContent()+""; + String htmlContent = "" +reservedConferenceVO.getHtmlContent()+""; // html转pdf并上传到服务器 - boolean convertFlag = PdfUtils.htmlStringConvertToPDF(RuoYiConfig.getHtml2PDFPath() + currentFileName, htmlContent); + PdfUtils pdfUtils = new PdfUtils(); + boolean convertFlag = pdfUtils.htmlStringConvertToPDF(RuoYiConfig.getHtml2PDFPath() + currentFileName, htmlContent); // 绑定案件 if(convertFlag){ -- 2.54.0