在这里记录的都是在项目开发中遇到的问题,都是自己查找网上资料,经过测试总结出来的,就是希望有同样需求的人可以少走弯路。

本人当前使用的是若依框架自带的富文本编辑器,附上相关图片,具体的代码可以查看若依框架源码。

用这款富文本编辑器导出的内容是一段只有html内容的字符串,类似以下的数据信息:

<h1 class=\"ql-align-center\">编辑器导出的内容</h1><p> <em> 富文本编辑器</em><span style=\"color: rgb(230, 0, 0);\">导出pdf格式文件</span>类似以下的数据</p>

以上数据只用来做示例。这样的数据缺少html文件的表头格式,所以我们在编辑器导出pdf格式

时要补全html文件格式。

首先是富文本编辑器导出pdf格式文件

增加相关pom依赖

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

<dependency>
            <groupId>com.itextpdf.tool</groupId>
            <artifactId>xmlworker</artifactId>
            <version>5.5.13</version>
        </dependency>

创建公共方法:

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.tool.xml.XMLWorkerFontProvider;
import com.itextpdf.tool.xml.XMLWorkerHelper;import java.io.*;
import java.nio.charset.Charset;public class PdfUtils {private static final String CONTENT = "<h1 class=\"ql-align-center\">编辑器导出的内容</h1><p> <em> 富文本编辑器</em><span style=\"color: rgb(230, 0, 0);\">导出pdf格式文件</span>类似以下的数据</p>";/*** 拼接CONTENT 使成为完整的html,\"font-family: SimSun;\"*/private static final String COMPLETE_CONTENT = "<html><head></head><body style=\"font-family: SimSun;\">" + CONTENT + "</body></html>";public static void main(String[] args) throws Exception {PdfUtils utils = new PdfUtils();String content = utils.content2Html();utils.html2Pdf("C:/Users/admin/Desktop/测试生成文档/pdf/" + "测试.pdf", content);}/*** html转换成pdf文件** @param htmlContent* @throws Exception*/protected void html2Pdf(String path, String htmlContent) throws Exception {htmlContent = htmlContent.replace("      ", "\u00A0\u00A0");File pdfFile = new File(path);//1 打开文件流Document document = new Document();FileOutputStream fos = new FileOutputStream(pdfFile);InputStream is = new ByteArrayInputStream(htmlContent.getBytes(Charset.forName("UTF-8")));InputStream cssIs = new ByteArrayInputStream(getCssFile());PdfWriter writer = null;try {writer = PdfWriter.getInstance(document, fos);//3. 设置字体XMLWorkerFontProvider fontProvider1 = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS);fontProvider1.register("C:/Windows/Fonts/simsun.ttc");//3 打开文档document.open();//4 html转为pdfXMLWorkerHelper.getInstance().parseXHtml(writer, document, is, cssIs, Charset.forName("UTF-8"), fontProvider1);} catch (DocumentException | IOException e) {throw new RuntimeException("转pdf失败罗~");} finally {if (null != writer) {writer.flush();}//5 关闭文档document.close();fos.close();cssIs.close();is.close();writer.close();}}/*** 获取html** @return*/protected String content2Html() {String content = COMPLETE_CONTENT;content = content.replace("<br>", "<br/>");return content;}/*** 获取样式文件** @return* @throws Exception*/protected static byte[] getCssFile() throws Exception {FileInputStream fileInputStream = new FileInputStream("ruoyi-common/src/main/resources/css/snow.css");ByteArrayOutputStream outStream = new ByteArrayOutputStream();byte[] buffer = new byte[1204];int len = 0;while ((len = fileInputStream.read(buffer)) != -1) {outStream.write(buffer, 0, len);}fileInputStream.close();return outStream.toByteArray();}
}

运行结果如下:

在首次运用中那个,需要确定是否存放了css文件和字体信息。我是直接将前端的css文件复制出来放在后端位置。

css文件将会影响到生成文本的格式。字体在系统里没有的话,需要自己网上下载,再放到字体库。同时手动的将编辑器输出的空格替换掉

htmlContent = htmlContent.replace(" ", "\u00A0\u00A0");

这样导出pdf格式文件就完成了。

其次是导出html静态页面

最终显示样式是

创建公共方法:

import java.io.FileOutputStream;
import java.io.PrintStream;public class wordUtils {public static void autoToHTML(String destFileName, String templateString) {//用于存储html字符串try {//打开文件PrintStream printStream = new PrintStream(new FileOutputStream(destFileName));//输入HTML文件内容templateString = templateString.replace("      ","\u00A0\u00A0");templateString =  "<html><head><link rel=\"stylesheet\" href=\"snow.css\" type=\"text/css\" /></head><body style=\"font-family: SimSun;\">" + templateString + "</body></html>";//将HTML文件内容写入文件中printStream.println(templateString);} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {String html = "<h1 class=\"ql-align-center\">编辑器导出的内容</h1><p> <em> 富文本编辑器</em><span style=\"color: rgb(230, 0, 0);\">导出pdf格式文件</span>类似以下的数据</p>";String path ="C:/Users/admin/Desktop/测试生成文档/html/demo.html";autoToHTML(path,html);}
}
这块需要注意的是,css文件放置的位置和保存静态页面的位置是一致的,或者根据具体情况放置,但是要确保html文件可以读到配置文件信息。

以上就是富文本编辑器导出html静态页面和pdf格式文件的主要内容,这里没有测试图片格式和视频格式,同时中文首行缩进长度还需优化,读者有更好的建议欢迎补充。

富文本编辑器导出html静态页面和pdf格式文件相关推荐

  1. luffcc项目-08-课程详情页、CKEditor富文本编辑器、课程详情页面、后台接口

    课程详情页 一.CKEditor富文本编辑器 富文本即具备丰富样式格式的文本.在运营后台,运营人员需要录入课程的相关描述,可以是包含了HTML语法格式的字符串.为了快速简单的让用户能够在页面中编辑带h ...

  2. html编辑保存为word文档,html 保存成word (富文本编辑器导出内容成word)

    这几天项目里有个需求,用到富文本编辑器,然后导出word. 富文本编辑器,网上很多,使用夜很简单,我们使用的是kindEditor.百度的ueditor很好,而且文档很全.阿里的kissy 感觉比较复 ...

  3. word读入富文本编辑器,编辑后导出下载word日常总结

    基本思路就是: 使用poi读入word文档, 读入内容转为html内容,(直接读入text仅仅只是文本没有格式) 将html内容给富文本编辑器显示(这样的目的是带格式). 下边贴代码: poi读入wo ...

  4. 富文本编辑器(html格式)导出为word(vue实现)

    纯Vue实现将多个富文本编辑器内容[html格式]统一导出为word 一.vue需要导入的包 二.制作html的格式 1. 为了方便,先用word制作成对应的导出样式,然后通过word导出为html格 ...

  5. 杨老师教你学会使用富文本编辑器KindEditor之添加页面设计

    2018-12-06 进行整理本篇文章,主要是解决如何引入富文本编辑器的使用 2019-06-18 进行了二次完善,解决了富文本编辑器的图片上传和附件上传问题 本篇文章进行二次更新操作,完善了上传图片 ...

  6. web富文本编辑器的选择のxheditor

    最近在研究web富文本编辑器,处理知道的 1.老牌fckeditor           网址:http://ckeditor.com/ 2.百度退出的ueditor 网址:http://uedito ...

  7. element ui富文本编辑器的使用(quill-editor)

    element ui富文本编辑器的使用(quill-editor) 文章目录 element ui富文本编辑器的使用(quill-editor) 效果展示:(可以上传图片及其视频) 第一步.首先安装富 ...

  8. JavaWeb富文本编辑器与文件上传

    目录 一.富文本编辑器 1.下载富文本编辑器 2.富文本编辑器的应用 二.文件上传 文件上传必须要注意的规则: 文件上传案例 文件夹的访问 一.富文本编辑器 富文本编辑器在项目中很常见,它可以将文本, ...

  9. MVC 使用 Ueditor富文本编辑器

    一.Ueditor 1.下载Ueditor富文本编辑器 官方下载地址: http://ueditor.baidu.com/website/download.html 建议下载开发版,此处我下载的是 . ...

最新文章

  1. GPU上的图像和信号处理
  2. python函数对变量的作用遵守原则有哪四条_创建一个包含四个参数的函数
  3. CSS的特性之层叠性介绍
  4. python闭包的原理_web前端:js 闭包原理
  5. Redis源码剖析(三)字典结构的设计与实现
  6. spring boot 503_Spring实战读书笔记第4章 面向切面的Spring
  7. php伪静态后无法获得url中参数_php runtime、http web中rewrite浅解和方案
  8. 前后端分离session_前后端分离:基于JWT用户认证分析
  9. jquery-ajax-jsonp-360搜索引擎的联想词获取
  10. UVA - 129 Krypton Factor (困难的串)(回溯法)
  11. Hibernate(十三)迫切内连接fetch
  12. 每天一个Linux命令-cat
  13. html禁用选择,html – 设置可选的禁用属性
  14. vue2.0 keep-alive 缓存页面数据
  15. 读书-算法《程序设计导引及在线实践》-简单计算题1:鸡兔同笼
  16. Unity-拓展篇-接入海康威视摄像头
  17. 心海软件学生测试系统,心海软件心理管理系统
  18. 桌面点击鼠标右键一直显示转圈卡住如何解决
  19. 【软件工程】瀑布模型的价值
  20. 微信java tools_微信开发工具包(weixin-java-tools)

热门文章

  1. 详解SQL中Groupings Sets 语句的功能和底层实现逻辑
  2. 基于sklearn的贝叶斯文本分类
  3. java版五子棋分析_基于JAVA的五子棋游戏系统设计实现分析.doc
  4. Ubuntu16.04 开机开启小键盘数字键,时默认开NumLock灯
  5. 无法打开包括文件: “ocl_macros.h”: No such file or directory
  6. Hastelloy C22合金板材 圆钢 无缝管
  7. Ubuntu中LightDM是什么(转)
  8. 大数据在生活中有什么应用(一)
  9. 插件化Amigo-1
  10. 区块链技术在食品溯源中的应用