当前位置: 首页 > news >正文

wordpress弹窗登录注册插件优化大师app下载

wordpress弹窗登录注册插件,优化大师app下载,住房和城乡建设部网站公告,小程序定制开发要多少钱Vue3 项目通过 docxtemplater 插件动态渲染 .docx 文档(带图片)预览,并导出 预览安装插件示例代码项目目录结构截图实际效果截图 动态渲染 .docx 文档(带图片),预览、导出安装插件docx 模板文件内容完整代码…

Vue3 项目通过 docxtemplater 插件动态渲染 .docx 文档(带图片)预览,并导出

  • 预览
      • 安装插件
      • 示例代码
      • 项目目录结构截图
      • 实际效果截图
  • 动态渲染 .docx 文档(带图片),预览、导出
      • 安装插件
      • docx 模板文件内容
      • 完整代码

预览效果展示

预览

必须是 .docx 文档,别的类型的文档请自行研究实现

  • 通过 vue-office/docx 插件预览 docx 文档
  • 通过 vue-office/excel 插件预览 excel 文档
  • 通过 vue-office/pdf 插件预览 pdf 文档

安装插件

npm install @vue-office/docx vue-demi

示例代码

<template><VueOfficeDocx :src="docx" @rendered="rendered"></VueOfficeDocx>
</template><script setup lang="ts">
import VueOfficeDocx from "@vue-office/docx";
import "@vue-office/docx/lib/index.css";
import { ref } from "vue";
const docx = ref("../../public/01.docx");const rendered = () => {console.log("加载完毕...");
};
</script><style lang="scss" scoped></style>

项目目录结构截图

在这里插入图片描述

实际效果截图

在这里插入图片描述

动态渲染 .docx 文档(带图片),预览、导出

安装插件

npm install docxtemplater
npm install docxtemplater-image-module-free
npm install pizzip
npm install file-saver

docx 模板文件内容

  • vue3项目把该模板 docx 文件放 public 文件夹里面
    在这里插入图片描述

完整代码

<template><div class="common-layout"><el-container style="height: 100vh"><el-asidestyle="width: 200px;background: rgb(216.8, 235.6, 255);padding: 80px 0 0 30px;"><el-button type="danger" @click="wordWrite(content)">写入</el-button><el-button type="danger" @click="wordExport(content)">导出</el-button><div></div></el-aside><el-container><el-header style="background: rgb(197.7, 225.9, 255)"><H2>Vue3 项目通过 docxtemplater 插件动态渲染 .docx文档(带图片)预览,并导出</H2></el-header><el-main><template v-if="!isShow"><h3>准备写入 docx 文件内容</h3><div><p>姓名:{{ content.name }}</p><p>年龄:{{ content.age }}</p><p>性别:{{ content.gender }}</p><p>学历:{{ content.education }}</p><p>个人简介:{{ content.introduction }}</p><p>头像:<img :src="content.avatar" alt="头像" /></p></div></template><div class="m-4"><!-- docx 文件预览插件 --><VueOfficeDocx :src="docx" v-if="isShow"></VueOfficeDocx></div></el-main></el-container></el-container></div>
</template><script setup lang="ts">
import { ref } from "vue";
import Docxtemplater from "docxtemplater";
import ImageModule from "docxtemplater-image-module-free";
import PizZip from "pizzip";
import PizZipUtils from "pizzip/utils";
import { saveAs } from "file-saver";
import VueOfficeDocx from "@vue-office/docx"; // 导入预览插件
import "@vue-office/docx/lib/index.css"; // 导入预览插件样式
const isShow = ref(false); // 预览组件状态const docx = ref("../../public/03.docx"); // 导入 docx 模板文件
import img from "@/assets/01.jpg"; // 导入本地图片// 准备写入内容
const content = ref({name: "张三",age: 25,gender: "男",education: "小学",introduction:"我是一个热爱学习的学生,喜欢阅读各种类型的书籍,同时也喜欢参加各种活动,比如参加比赛、组织活动等等。",avatar: img,
});/*** 生成文档内容* @param docData 准备写入内容*/
const GenerateADocument = (docData) => {return new Promise((resole, reject) => {const loadFile = function loadFile(url: any, callback: any) {PizZipUtils.getBinaryContent(url, callback);};loadFile(docx.value, function (error: any, content: any) {if (error) {reject(new Error("模板文件未找到"));}// 处理图片let opts: any = {};opts.centered = false;opts.fileType = "docx";opts.getImage = function (tagValue: any) {return new Promise(function (resolve, reject) {PizZipUtils.getBinaryContent(tagValue,function (error: any, content: any) {if (error) {return reject(error);}return resolve(content);});});};opts.getSize = function () {//这里是生成的word文件里图片的宽和高// 可以根据自己的需要进行修改,获取图片实际的宽和高,然后返回return [255, 195];};let imageModule = new ImageModule(opts);var zip = new PizZip(content);let doc = new Docxtemplater().loadZip(zip).attachModule(imageModule).compile();doc.resolveData(docData).then(function () {doc.render();let out = doc.getZip().generate({type: "blob",mimeType:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",});if (out) {resole(out);} else {reject(new Error("文件生成失败"));}});});});
};/*** 写入方法* @param docData 准备写入内容*/
const wordWrite = (docData) => {GenerateADocument(docData).then((res) => {docx.value = URL.createObjectURL(res);isShow.value = true;}).catch((err) => {console.log(err, "err");});
};/*** 导出方法* @param docData 准备写入内容*/
const wordExport = (docData) => {GenerateADocument(docData).then((res) => {saveAs(res, "测试文件" + ".docx");}).catch((err) => {console.log(err, "err");});
};
</script>

vue-office 插件预览的时候文件中表格样式被破坏的问题正在研究。

http://www.cadmedia.cn/news/13602.html

相关文章:

  • 河源市住房建设局网站沈阳网站建设公司
  • 上海免费网站建设模板宁波网站推广公司价格
  • 普陀区网站建设公司数据营销
  • 台州市建设厅网站网站域名解析ip查询
  • 一个网站需要多少钱长沙的seo网络公司
  • 成都户外网站建设深圳发布最新通告
  • 太原做网站的公司软文是什么文章
  • 域名阿里云浙江专业网站seo
  • 免费网站建设翻译广州代运营公司有哪些
  • 建筑设计人才招聘优化seo报价
  • 模板网站制作多少钱韩国日本比分
  • 惠济区城乡建设局网站宁波网站排名优化seo
  • 视频号的网站链接如何进行搜索引擎优化
  • 平面设计网站模板网站推广怎么做有效果
  • 万全县城乡建设网站外汇交易平台
  • 网站的设计与制作阅读第2版设计网站排行
  • 济南网站建设 力选聚搜网络软文的概念是什么
  • 建设汽车行业网站免费seo网站推广
  • 保定市人民政府网站河南网络推广公司
  • 开发一个大型网站多少钱网络营销的方法有哪些?举例说明
  • 帮别人做网站免费网页在线客服制作
  • 怎样提高网站的排名企业网站优化哪家好
  • 微信小程序什么时候上线的青岛seo计费
  • 公司网站服务器优化tool站长工具
  • 镇江网站建设哪家好线下实体店如何推广引流
  • 网站建设流程平台沈阳企业网站seo公司
  • 玛迪网站建设抖音seo搜索优化
  • 网站建设工期及预算游戏推广对接平台
  • 济南知名网站建设平台百度商店
  • 迪庆北京网站建设公司企业网站模板