vue2 md文件预览和下载

vue2 md文件预览和下载

javascript 复制代码
本文展示预览md文件,以及将md内容下载成md和pdf文件的方法
1、使用vue-meditor插件
2、使用@kangc/v-md-editor插件

3、md内容下载成md文件
4、md内容下载成pdf文件
复制代码
注意:markdown-it、vue-markdown、marked插件也试了,效果不好,不推荐

(1)vue-meditor

步骤1:下载依赖
复制代码
npm i vue-meditor -S
步骤2:使用
javascript 复制代码
<!--    md编辑器,需要-->
    <MarkdownPro :initialValue="markdownContent" :isPreview="false"/>
<!--    md预览-->
    <MarkdownPreview :initialValue="markdownContent"></MarkdownPreview>
javascript 复制代码
<script>
import Markdown from 'vue-meditor';
import { MarkdownPro } from 'vue-meditor'
import { MarkdownPreview } from 'vue-meditor'

export default {
  data() {
    return {
      markdownContent: '',
    };
  },
  components: {
    Markdown,
    MarkdownPro,
    MarkdownPreview
  },
  mounted() {
    this.loadMarkdownFile();
  },
  methods: {
    async loadMarkdownFile() {
      try {
        //引入在public文件夹下的md文件
        const response = await fetch('/api.md');
        const markdownText = await response.text();
        this.markdownContent = markdownText;
      } catch (error) {
        console.error('Failed to load the Markdown file:', error);
      }
    },
  }
};
</script>

(2)方法二:@kangc/v-md-editor

步骤1:下载依赖
复制代码
1、npm i @kangc/v-md-editor -S
2、npm install --save highlight.js
步骤2:使用
javascript 复制代码
 <VMdPreview :text="markdownContent"></VMdPreview>
<script>
import VMdPreview from '@kangc/v-md-editor/lib/preview';
import '@kangc/v-md-editor/lib/style/preview.css';
import githubTheme from '@kangc/v-md-editor/lib/theme/github';
import '@kangc/v-md-editor/lib/theme/style/github.css';
import hljs from 'highlight.js';

VMdPreview.use(githubTheme, {
  Hljs: hljs,
});

const markdownContent = ref('# Hello md-e 👋\n\n- 支持实时预览\n- 支持图片上传\n- 支持快捷键(如 Ctrl+S 保存)')
const loadMarkdownFile = async () =>{
  try {
    //引入在public文件夹下的md文件
    const response = await fetch('/api.md');
    const markdownText = await response.text();
    markdownContent.value = markdownText;
  } catch (error) {
    console.error('Failed to load the Markdown file:', error);
  }
}

loadMarkdownFile()
</script>

(3)下载md文件

方法1:
javascript 复制代码
// * 保存.md文件 
const onSaveMD = () => {
  const blob = new Blob([markdownContent.value], { type: 'text/markdown' });

  const link = document.createElement('a');
  link.href = URL.createObjectURL(blob);
  link.download = `1.md`;

  link.click();

  URL.revokeObjectURL(link.href);
};
方法2:
javascript 复制代码
import download from "downloadjs" //(只能下载源文件,不能下载需要转格式的)
const onSaveMD = () => {
  download(this.markdownContent, 'test12.md', "text/markdown");
};

(4)md内容下载成pdf文件

javascript 复制代码
<VMdPreview :text="markdownContent"  id="content-to-pdf"></VMdPreview>
<script setup>
import html2pdf from 'html2pdf.js';
// * 保存.pdf文件
const onSavePDF = () => {
  // 获取要转换的元素或创建临时元素
  const element = document.getElementById('content-to-pdf');

  const options = {
    margin: 10,
    filename: 'document.pdf',
    image: { type: 'jpeg', quality: 0.98 },
    html2canvas: { scale: 2 },
    jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }
  };
  html2pdf().from(element).set(options).save();
    // html2pdf().from(tableElement).save()
};

</script>
相关推荐
cll_869241891几秒前
一个好看的Wordpress博客文字css样式
前端·css·ui
糖果店的幽灵5 分钟前
langgraph分支之 - 动态分支(Dynamic Branch)
java·前端·javascript·人工智能·langgraph
meilindehuzi_a15 分钟前
Workflow 与 Agent 有什么区别:从 LangChain 流水线到智能体决策
前端·人工智能
Bad_Shepherd20 分钟前
vue-element-plus-admin添加自定义svg图标,并且图标选择组件可选自定义图标
vue.js·elementui·前端框架
这是个栗子23 分钟前
前端开发中的常用工具函数(九)
开发语言·javascript·ecmascript·at
吃糖的小孩2 小时前
从只读页面到可控真实探针:我如何给 Owner Console 加手动诊断
前端
谷无姜2 小时前
为什么你的性能优化无效?可能是"木桶效应"在作祟
前端·性能优化
雾非雾2 小时前
《基于具身交互智能数字人技术:如何打造AI数字人宣讲平台"红厅智播”》
前端
Revolution612 小时前
一段 JavaScript 代码执行时,到底发生了什么
前端·javascript
智能起源2 小时前
关于元素层级过多,导致压祯的问题(使用winform或者WPF应用的webview组件嵌套网页时,动效卡顿问题)
前端