markdown 转 pdf 以及 mardown 转 html
时间:2022-07-23
本文章向大家介绍markdown 转 pdf 以及 mardown 转 html,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.markdown 转 pdf
1.使用第三方库
- markdown-pdf
- rimraf
2.代码解读
1.引入库
const mtp = require('markdown-pdf')
const fs = require('fs')
const path = require('path')
const rm = require('rimraf')
2.初始化文件目录 需要将存在的 pdf 目录清除重建
const mdFolder = 'markdown' // md目录
const pdfFolder = 'pdf' // pdf目录
rm.sync(path.resolve(pdfFolder)) // 删除pdf文件夹
if (!fs.existsSync(pdfFolder)) {
fs.mkdirSync(pdfFolder); // 新建pdf文件夹
}
3.生成 pdf 文件 循环读取 mardown 文件夹中文件, 读取 markdown 文件流, 并转换为pdf数据流, 最后存入 pdf 文件中
fs.readdir(path.resolve(mdFolder), (err, files) => { // 读取md文件夹文件列表
if (err) throw err
let sum = 0 // 用于 markdown 文件计数
const total = files.length // 总文件数
files.forEach(file => { // 遍历文件
sum++
const fileName = file.match(/(.*).[^.]+$/)[1] // 提取文件名 test.md => test
fs.createReadStream(path.resolve(`${mdFolder}/${file}`)) // 创建读取操作的数据流
.pipe(mtp()) // 转换成pdf数据流
.pipe(fs.createWriteStream(path.resolve(`${pdfFolder}/${fileName}.pdf`))) // 写入文件
console.log(`${file} => ${fileName}.pdf 成功, 当前转换进度 ${sum} / ${total}`)
})
})
mardown 转 html
1.使用第三方库
- showdown
- rimraf
2.代码解读
1.引入库
const showdown = require('showdown')
const converter = new showdown.Converter()
converter.setFlavor('github') // 设置成github风格的转换器
const fs = require('fs')
const path = require('path')
const rm = require('rimraf')
2.初始化文件目录
const mdFolder = 'markdown' // md目录
const htmlFolder = 'html' // html目录
rm.sync(path.resolve(htmlFolder)) // 删除html文件夹
if (!fs.existsSync(htmlFolder)) {
fs.mkdirSync(htmlFolder) // 新建html文件夹
}
3.生成 html 文件
fs.readdir(path.resolve(mdFolder), (err, files) => { // 读取md文件夹文件列表
if (err) throw err
let sum = 0 // 用于 markdown 文件计数
const total = files.length // 总文件数
files.forEach(file => { // 遍历文件
sum++
const fileName = file.match(/(.*).[^.]+$/)[1] // 提取文件名 test.md => test
fs.readFile(path.resolve(`${mdFolder}/${file}`), 'utf8', (err, data) => { // 读取文件
if (err) {
console.error(err)
return
}
const htmlContent = converter.makeHtml(data) // md 转成 html
fs.writeFile(path.resolve(`${htmlFolder}/${fileName}.html`), htmlContent, 'utf8', (err) => { // 写入到html文件
if (err) throw err;
console.log(`${file} => ${fileName}.html 成功, 当前转换进度 ${sum} / ${total}`)
})
})
})
})
- HTML 教程
- HTML 简介
- html div 标签介绍
- html span 标签介绍
- html a 超链接标签
- HTML Br换行标签介绍
- HTML P段落标签介绍
- HTML br与p标签区别
- Html H 标题标签
- html px em pt长度单位
- HTML form 标签
- HTML radio 单选框
- HTML B 加粗标签
- HTML strong加粗粗体标签
- HTML em 强调标签
- HTML i 斜体标签
- HTML u下划线标签
- HTML s 删除线标签
- Html img 图片标签
- Html上标注sup与下标注sub标签
- HTML nobr 禁止换行标签
- HTML hr 水平线标签
- HTML label 标签
- HTML input 标签
- HTML textarea 标签
- HTML select下拉列表标签
- HTML checkbox 多选框
- HTML font color 标签
- HTML iframe 框架标签
- HTML Table 表格
- HTML dl dt dd 标签
- HTML ol li有序列表标签
- HTML ul li 无序列表标签
- HTML 注释
- CSS 教程
- CSS 简介
- CSS 语法
- CSS Id 和 Class选择器
- CSS 样式的创建
- CSS background 背景介绍
- CSS 文本样式
- CSS font 字体
- CSS A 链接
- CSS ul ol列表样式
- CSS TABLE 样式
- CSS 框模型
- CSS border 边框
- CSS Outlines 轮廓
- CSS 外边距 Margin
- CSS Padding 内边距
- CSS 分组和嵌套选择器
- CSS 尺寸 (Dimension)
- CSS Display 属性
- CSS Position 定位
- CSS Float 浮动
- CSS 水平对齐(Horizontal Align)
- CSS 组合选择符
- CSS 伪类
- CSS 伪元素
- CSS 导航栏
- CSS 下拉菜单
- CSS 图片廊
- CSS 图像透明/不透明
- CSS sprite 图像拼合技术
- CSS 媒体类型
- CSS 属性选择器
- CSS 实例
- C++实现RTMP协议发送H.264编码及AAC编码的直播软件开发音视频
- Redis | Redis 的安装
- Redis | Redis的帮助命令
- LeetCode | 206.反转链表
- java之子类对象实例化过程
- java之instanceof操作符
- java之Object类
- springboot开发之引入资源并实现跳转到登录界面
- java之==操作符和equals操作符
- LeetCode | 24.两两交换链表中的节点
- java之单例设计模式
- Nginx | Nginx的介绍和安装
- 真特么激动第一个爬虫----爬取豆瓣电影top250
- LeetCode | 141.环形链表
- LeetCode | 20.有效的括号