0


前端预览文件,后台返回文件流数据--docx-preview

之前使用的是mammoth.js,预览的时候会有一部分的样式缺失

使用docx-preview 能减少样式的缺失,该插件不能实现doc的文件预览,只能实现docx的文件预览

1、安装下载插件

npm i docx-preview --save

注意事项:

1、使用过程中,docx-preview插件的版本问题,在vue2.6版本中,使用的docx-preview版本是0.1.20,所以使用以下版本,不然会报错提示,已经安装了插件,使用的时候提示需要安装插件,一直编译不成功

npm i docx-preview@0.1 --save

2、如果是低版本的浏览器,在项目启动的时候,会报错提示:

解决的办法,在index.html中

  1. <script>
  2. if (typeof globalThis === 'undefined') {
  3. globalThis = (function () {
  4. // 根据当前环境选择合适的全局对象
  5. if (typeof self !== 'undefined') { return self; }
  6. if (typeof window !== 'undefined') { return window; }
  7. if (typeof global !== 'undefined') { return global; }
  8. this.globalThis || (this.globalThis = this)
  9. throw new Error('unable to locate global object');
  10. })();
  11. }
  12. </script>

2、引入

import { renderAsync } from 'docx-preview';

3、使用:

  1. <div ref="docView" id="docView"></div>

4、vue、或者js代码

  1. fetch(url,{mode:'no-cors'})
  2. .then((response) => response.blob())
  3. .then((res)=>{
  4. const reader = new FileReader()
  5. reader.readAsArrayBuffer(res)
  6. reader.onload = function(e){
  7. let buffer = e.target.result
  8. let bodyCon = document.getElementById('docView')
  9. renderAsync(buffer,
  10. bodyCon, // HTMLElement 渲染文档内容的元素,
  11. null // HTMLElement, 用于呈现文档样式、数字、字体的元素。如果为 null,则将使用 //bodyCon
  12. //如果有文档预览的默认样式,则设置options
  13. ).then((res)=>{
  14. console.log(res)
  15. })
  16. }
  17. })

5、还可以设置一些自定义的样式

  1. docxOptions: {
  2. className: "kaimo-docx-666", // string:默认和文档样式类的类名/前缀
  3. inWrapper: true, // boolean:启用围绕文档内容的包装器渲染
  4. ignoreWidth: true, // boolean:禁用页面的渲染宽度
  5. ignoreHeight: false, // boolean:禁止渲染页面高度
  6. ignoreFonts: true, // boolean:禁用字体渲染
  7. breakPages: false, // boolean:在分页符上启用分页
  8. ignoreLastRenderedPageBreak: true, // boolean:在 lastRenderedPageBreak 元素上禁用分页
  9. experimental: false, // boolean:启用实验功能(制表符停止计算)
  10. trimXmlDeclaration: true, // boolean:如果为true,解析前会从 xml 文档中移除 xml 声明
  11. useBase64URL: false, // boolean:如果为true,图片、字体等会转为base 64 URL,否则使用URL.createObjectURL
  12. useMathMLPolyfill: false, // boolean:包括用于 chrome、edge 等的 MathML polyfill。
  13. showChanges: false, // boolean:启用文档更改的实验性渲染(插入/删除)
  14. debug: false, // boolean:启用额外的日志记录
  15. },

参考地址:docx-preview在vue内的使用_vue docx-preview-CSDN博客

6、style样式:

  1. <style scoped>
  2. .docx-container ::v-deep .docx-wrapper {
  3. background-color: #fff;
  4. padding: 20px;
  5. }
  6. .docx-container ::v-deep .docx-wrapper > section.docx {
  7. width: 100% !important;
  8. padding: 0rem !important;
  9. min-height: auto !important;
  10. box-shadow: none;
  11. margin-bottom: 0;
  12. }
  13. .docx-container ::v-deep .docx-wrapper > section.docx::-webkit-scrollbar {
  14. display: none;
  15. }
  16. </style>
  17. /* 如果没有效果,可以设置/deep/*/
  18. <style scoped>
  19. /deep/.docx-wrapper {
  20. background-color: #fff;
  21. padding: 20px;
  22. }
  23. /deep/.docx-wrapper > section.docx {
  24. width: 100% !important;
  25. padding: 0rem !important;
  26. min-height: auto !important;
  27. box-shadow: none;
  28. margin-bottom: 0;
  29. }
  30. /deep/.docx-wrapper > section.docx::-webkit-scrollbar {
  31. display: none;
  32. }
  33. </style>

可以参考的网址:

https://blog.csdn.net/w1060436872/article/details/129125294 vue docx-preview实现docx文件在线预览

官网地址:docx-preview - npm

标签: 前端 javascript html

本文转载自: https://blog.csdn.net/xiyuanxian/article/details/138621250
版权归原作者 xyxianyn 所有, 如有侵权,请联系我们删除。

“前端预览文件,后台返回文件流数据--docx-preview”的评论:

还没有评论