Vue 3 + Vue Office 实现企业级文档在线预览系统

Vue3实现一个文档学习网站 vue实现一个文档学习网站 阅读详情

1. 为什么企业需要自己的文档在线预览系统?

如果你在企业里负责过OA系统、知识库或者任何需要处理文档的Web应用,大概率遇到过这样的需求:用户上传了一个Word文档或者Excel表格,希望能直接在浏览器里点开看看,而不是每次都下载到本地再用Office软件打开。听起来很简单,对吧?但真做起来,坑可不少。

我经历过好几次,早期项目里要么用<iframe>直接嵌入一个在线Office的链接,加载慢不说,样式还经常错乱;要么就是让后端把文档转成图片或者PDF,服务器压力大,用户体验也打折扣。直到后来用上了 Vue 3 配合 Vue Office 这套组合拳,才算是找到了一个既轻量又强大的解决方案。它不是在网页里嵌一个完整的Office,而是真正在浏览器里“渲染”出文档的原貌,交互体验和本地打开几乎没差别。

对于企业级应用来说,文档在线预览远不止是“能看”这么简单。它关乎效率,销售同事需要快速查看合同草案,财务需要核对报表数据,人事需要浏览简历,如果每次都要下载、打开、再关闭,流程就被打断了。它也关乎安全,敏感文档最好能不落地就在受控的环境内查看。它还关乎成本和维护,一个稳定、易扩展的预览方案,能省去大量后期折腾的功夫。

所以,我们今天要聊的,就是如何用 Vue 3 和 Vue Office 组件库,从头搭建一个属于你自己项目的、企业级的文档在线预览系统。我会把我在实际项目中踩过的坑、总结的最佳实践,以及如何让它真正融入你的业务流,都分享给你。咱们不搞花架子,就讲能直接上手的干货。

2. 技术选型与核心组件:为什么是Vue 3 + Vue Office?

市面上实现文档预览的方案不少,有服务端渲染的,有调用第三方API的,也有纯前端的。经过多次对比和实战,我最终锁定了 Vue 3 + Vue Office 这个组合,原因很简单:它把复杂留给了库,把简单和灵活留给了开发者。

先说说 Vue 3。它的 Composition API 对于构建这类功能清晰、状态管理明确的组件简直是神器。预览组件通常需要处理文件加载、类型判断、渲染状态、错误处理等一系列“状态”,用ref、reactive和computed可以非常优雅地把这些逻辑组织在一起,比传统的Options API写起来要清晰得多。而且Vue 3的响应式系统和更小的打包体积,对于追求性能的企业应用来说也是加分项。

然后是今天的明星—— Vue Office。这不是一个单一的库,而是一套专门为Vue生态打造的办公文档预览组件集合。它的核心优势在于:

  • 格式专精:它针对不同格式有独立的、优化过的组件。比如@vue-office/docx专门处理.docx,@vue-office/excel处理.xlsx,@vue-office/pdf处理PDF。各司其职,效果最好。
  • 纯前端处理:文档的解析和渲染完全在浏览器端完成。这意味着你的服务器只需要提供原始的文档文件流(ArrayBuffer或Blob),无需进行任何格式转换,极大减轻了服务端压力,也避免了转换过程中的信息丢失或样式错位。
  • 真正的“所见即所得”:它不是把文档变成图片,而是渲染出可交互的内容。Word文档能保持字体、段落、表格样式;Excel文件支持简单的公式计算、排序和筛选(当然,复杂宏不支持);PDF则能保持矢量清晰度。用户体验直接拉满。

这里有个重要的点需要注意,也是我当初踩的第一个坑:Vue Office的Word组件目前只支持 .docx 格式(即Office 2007及以后的XML格式),不支持老的 .doc 格式。如果你的系统还有大量历史.doc文件,需要在后端或上传时做一个统一的转换预处理,这是一个必须考虑的成本点。

安装起来非常简单,你可以按需安装:

npm install @vue-office/docx @vue-office/excel @vue-office/pdf

或者如果你确定几种格式都需要,也可以一次性装上。每个组件都是开箱即用的,我们接下来就看看怎么把它们组装起来。

3. 系统架构设计与核心实现

一个健壮的企业级预览系统,不能只是一个孤立的组件,它需要融入整个应用的路由、状态和数据流。我设计并验证过的一个可靠架构是这样的:通过路由参数驱动文件信息的获取与渲染。这样做的好处是,预览页可以被直接链接、分享,并且状态完全由URL管理,非常清晰。

3.1 路由与参数设计

首先,我们规划一个专门的路由来承载预览功能。在Vue Router中,可以这样配置:

// router/index.js
import { createRouter, createWebHistory } from 'vue-router'
import FilePreview from '@/views/FilePreview.vue'

const routes = [
  // ... 其他路由
  {
    path: '/preview',
    name: 'FilePreview',
    component: FilePreview,
    // 这里可以添加路由守卫,用于权限校验等
  }
]

关键是如何传递文件信息。我强烈推荐使用查询参数(Query Parameters),而不是路径参数。因为文件信息(如ID、名称、存储位置、类型)可能比较长,且不是层级结构,用查询参数更灵活。一个典型的预览URL长这样:

https://your-app.com/preview?fileId=12345&fileName=季度报告.docx&bucket=user-uploads&fileType=word
  • fileId: 文件在后台数据库或存储系统中的唯一标识,用于后端获取文件。
  • fileName: 文件原名,主要用于前端展示和下载时的默认文件名。
  • bucket: (可选)文件所在的存储桶或目录,用于更精细的权限或路径控制。
  • fileType: 文件类型,这是我们前端选择渲染组件的关键依据。可以传word, excel, pdf, image, txt等。

3.2 核心预览组件实现

现在,我们来创建核心的预览组件 FilePreview.vue。我会把完整的逻辑拆解给你看。

第一步:组件框架与响应式数据 我们使用Composition API来组织代码。首先定义响应式数据来存储从路由获取的信息和文件内容。

<template>
  <div class="file-preview-container">
    <!-- 预览区域将在这里动态渲染 -->
  </div>
</template>

<script setup lang="ts">
import { ref, onMounted, watch, onUnmounted } from 'vue'
import { useRoute } from 'vue-router'
import { downloadFileApi } from '@/api/file' // 假设这是你封装的文件下载API

const route = useRoute()

// 响应式数据:存储路由参数和文件内容
const fileId = ref('')
const fileName = ref('')
const bucketName = ref('')
const fileType = ref('') // 'word', 'excel', 'pdf', 'image', 'txt'
const fileSrc = ref<any>(null) // 存储文件原始数据,可能是ArrayBuffer、Blob URL或文本
const loading = ref(false)
const error = ref('')
</script>

第二步:文件下载与类型处理逻辑 这是核心函数,负责根据文件ID从后端获取文件,并按照不同类型进行处理。

// 在<script setup>中继续
const downloadFile = async () => {
  if (!fileId.value) return

  loading.value = true
  error.value = ''
  try {
    // 调用API,注意设置responseType为'arraybuffer',以获取二进制数据
    const fileData: ArrayBuffer = await downloadFileApi({
      id: fileId.value,
      bucket: bucketName.value
    })

    // 根据文件类型进行差异化处理
    switch (fileType.value) {
      case 'txt':
        // 文本文件:将ArrayBuffer解码为UTF-8文本
        const decoder = new TextDecoder('utf-8')
        fileSrc.value = decoder.decode(fileData)
        break
      case 'image':
        // 图片文件:创建Blob URL供<img>标签使用
        // 这里需要知道具体的MIME类型,可以从后端API返回的Header中获取,或根据fileName推断
        const imageBlob = new Blob([fileData], { type: 'image/jpeg' }) // 类型需动态判断
        fileSrc.value = URL.createObjectURL(imageBlob)
        break
      case 'word':
      case 'excel':
      case 'pdf':
        // Office/PDF文件:直接传递ArrayBuffer给Vue Office组件
        fileSrc.value = fileData
        break
      default:
        error.value = `不支持的文件类型: ${fileType.value}`
        console.error('Unsupported file type:', fileType.value)
    }
  } catch (err) {
    error.value = '文件加载失败,请重试或联系管理员。'
    console.error('文件下载失败:', err)
  } finally {
    loading.value = false
  }
}

第三步:动态组件渲染与路由监听 在模板中,我们需要根据fileType动态渲染不同的预览组件。同时,要监听路由参数的变化,以便在同一个预览页面内切换不同文件。

<template>
  <div class="file-preview-container">
    <div v-if="loading" class="loading">文件加载中...</div>
    <div v-else-if="error" class="error">{{ error }}</div>
    <div v-else class="preview-content">
      <!-- 动态渲染预览器 -->
      <VueOfficeDocx
        v-if="fileType === 'word' && fileSrc"
        :src="fileSrc"
        @rendered="handleRendered"
        @error="handleError"
      />
      <VueOfficeExcel
        v-else-if="fileType === 'excel' && fileSrc"
        :src="fileSrc"
        @rendered="handleRendered"
        @error="handleError"
      />
      <VueOfficePdf
        v-else-if="fileType === 'pdf' && fileSrc"
        :src="fileSrc"
        @rendered="handleRendered"
        @error="handleError"
      />
      <img
        v-else-if="fileType === 'image' && fileSrc"
        :src="fileSrc"
        :alt="fileName"
        style="max-width: 100%;"
      />
      <pre v-else-if="fileType === 'txt' && fileSrc" class="text-preview">{{ fileSrc }}</pre>
      <div v-else class="unsupported">暂不支持预览此文件格式</div>
    </div>
  </div>
</template>

<script setup lang="ts">
// ... 之前的代码

// 监听路由参数变化,实现无缝文件切换
watch(
  () => [
    route.query.fileId,
    route.query.fileName,
    route.query.bucketName,
    route.query.fileType
  ],
  () => {
    // 更新响应式数据
    fileId.value = route.query.fileId as string
    fileName.value = route.query.fileName as string
    bucketName.value = route.query.bucketName as string
    fileType.value = (route.query.fileType as string)?.toLowerCase() || ''

    // 清理旧的预览数据
    revokeOldBlobUrl()
    fileSrc.value = null

    // 加载新文件
    if (fileId.value) {
      downloadFile()
    }
  },
  { immediate: true } // 组件创建时立即执行一次
)

// 组件挂载时,如果路由参数已有值,则加载文件
onMounted(() => {
  if (route.query.fileId) {
    downloadFile()
  }
})
</script>

3.3 至关重要的内存管理与错误处理

企业应用最怕内存泄漏和无声的失败。这里有两个细节必须处理好。

内存管理:当我们为图片创建Blob URL后,浏览器会一直占用内存直到页面卸载。如果在同一个预览页内频繁切换图片文件,而不释放旧的URL,就会导致内存持续增长。

// 在<script setup>中
const revokeOldBlobUrl = () => {
  if (fileSrc.value && typeof fileSrc.value === 'string' && fileSrc.value.startsWith('blob:')) {
    URL.revokeObjectURL(fileSrc.value)
  }
}

// 组件卸载时,务必清理资源
onUnmounted(() => {
  revokeOldBlobUrl()
})

错误处理与状态反馈:Vue Office组件提供了@rendered和@error事件,我们要善加利用,给用户明确的反馈。

const handleRendered = () => {
  console.log('文档渲染完成')
  // 可以在这里隐藏加载骨架屏,或进行其他UI更新
}

const handleError = (err: any) => {
  console.error('文档渲染失败:', err)
  error.value = '文档渲染出错,可能是文件已损坏或不兼容。'
  // 可以尝试降级方案,比如提示用户下载原文件查看
}

4. 企业级功能增强与性能优化

基础功能跑通只是第一步。要让它能在真实的企业环境中稳定、高效地运行,我们还需要做一些增强和优化。

4.1 大文件处理与性能优化

Vue Office在浏览器端解析几十兆的大文档时,可能会造成页面短暂卡顿甚至崩溃。我的经验是:

  1. 前后端配合,限制文件大小:在前端上传时就拦截过大的文件(比如超过50MB),并在后端下载接口也做限制。给用户明确的提示:“为保证预览流畅,建议文件小于XXMB”。
  2. 实现分片加载(针对PDF):对于超大的PDF,@vue-office/pdf底层基于pdf.js,它本身支持流式加载。我们可以通过配置,让PDF先加载第一页,用户滚动时再加载后续内容,实现快速首屏渲染。
  3. 添加加载状态与进度提示:在downloadFile函数中,可以结合Axios的onUploadProgress事件或自己模拟一个进度条,让用户知道文件正在加载,而不是白屏等待。
  4. 利用Web Worker(高级优化):对于极其复杂的Excel或Word文件,可以将Vue Office的解析逻辑放到Web Worker中,避免阻塞主线程,保持页面交互流畅。但这会显著增加代码复杂度,需要评估是否必要。

4.2 安全与权限控制

在企业里,不是所有文件都能被所有人预览。安全是重中之重。

  • 接口层面:你的downloadFileApi必须在后端进行严格的权限校验。根据当前登录用户的角色、部门等信息,判断其是否有权访问fileId对应的文件。永远不要相信前端传递过来的文件ID就直接返回文件流。
  • 前端路由守卫:在Vue Router的全局前置守卫中,可以对/preview路由进行拦截,检查用户是否已登录,甚至可以预校验一次权限(虽然最终决定权在后端)。
  • 文件链接时效性:对于非常敏感的文件,可以让后端生成的下载链接具有时效性(比如5分钟过期),并且一次性有效。即使预览URL被泄露,风险也在可控范围内。
  • 禁止打印与下载(水印):这是一个更深入的需求。纯前端的禁止并不绝对安全,但可以增加门槛。可以通过CSS禁止打印,或为预览内容覆盖一个透明的水印层。更安全的方案是在后端转换文件时直接嵌入水印,但这超出了Vue Office的能力范围,需要服务端处理。

4.3 用户体验细节打磨

  1. 文件类型图标与友好提示:在进入预览页之前,比如在文件列表页,就可以根据文件后缀显示对应的图标。对于不支持预览的格式(如.zip, .psd),直接显示下载按钮,避免用户点进去才看到错误。
  2. 预览失败降级方案:如果Vue Office渲染失败(比如文件损坏),除了显示错误信息,应该提供一个“下载原始文件”的按钮,让用户有路可退。
  3. 多标签页支持:用户可能希望同时对比查看多个文档。我们的预览页因为完全由URL参数驱动,所以天然支持在浏览器新标签页中打开。只需在生成预览链接时,使用router.resolve方法生成完整的URL即可。
  4. 集成到业务流:预览组件不应该是一个孤岛。思考如何将它嵌入你的业务模块。例如,在任务审批流中,附件旁边直接有一个“预览”小图标;在知识库文章里,引用的文档可以直接展开预览。这需要你将预览组件设计得足够通用和可嵌入。

5. 部署实践与踩坑指南

理论说再多,不如实际部署时遇到的问题实在。我总结了几条关键的实践建议和常见坑点。

依赖安装与打包:@vue-office系列组件本身体积控制得不错,但要注意它们可能会引入一些较大的底层库(比如处理PDF的pdf.js)。在构建时,确保你的打包工具(如Vite或Webpack)能正确打包这些依赖。有时可能需要调整一下构建配置来优化chunk分割。

版本兼容性:关注Vue Office和Vue 3的版本匹配。虽然它们一般兼容性很好,但在升级主要版本时,最好先查看一下官方更新日志。我曾经遇到过一次小版本升级后,Excel的某些边框样式渲染有轻微差异,好在回退版本后问题解决。

浏览器兼容性:Vue Office依赖现代浏览器API(如ArrayBuffer, Blob, TextDecoder)。这意味着对IE浏览器支持不友好(实际上Vue 3本身也不支持IE)。你的企业如果还有IE用户,需要明确告知不支持,或者为他们提供直接的下载功能。主流现代浏览器(Chrome, Edge, Firefox, Safari)的新版本都没有问题。

服务器配置:确保你的后端服务器在返回文件流时,设置了正确的响应头。特别是Content-Type和Content-Disposition。对于跨域请求,别忘了配置CORS。一个常见的坑是,后端返回的文件流编码不对,导致前端解析文本或PDF时乱码。

监控与日志:在生产环境,一定要在前端和后端添加适当的日志。记录预览请求的成功/失败率、文件大小、加载时间等。这能帮你快速定位是网络问题、文件问题还是组件兼容性问题。Vue Office提供的@error事件是很好的埋点位置。

最后,再强调一个心态:没有完美的方案。Vue Office解决了绝大部分常见办公文档的预览需求,且方案优雅。但对于一些极端场景(如包含复杂宏的Excel、特定版本的WPS保存的文档),可能仍有瑕疵。这时,你需要有一个备选方案,比如引导用户“下载后用专业软件查看”。技术方案是平衡的艺术,在满足了核心需求(快速、安全、多格式预览)之后,适当的妥协是可以接受的。

Vue3项目实战:5分钟搞定vue-office实现Word/Excel在线预览(附PDF方案) 本文详细介绍了如何在Vue3项目中快速集成vue-office实现Word/Excel在线预览,并提供了PDF处理的替代方案。通过环境准备、文件上传渲染、性能优化及高级功能实践,帮助开发者高效实现文档预览功能,提升企业级应用开发效率。 阅读详情

相关推荐

Vue2实现Office文档(docx、xlsx、pdf)在线预览

在现代的Web应用开发中,实现Office文档(如docx、xlsx、pdf)的在线预览功能是一个常见的需求。这不仅可以提升用户体验,还能使文档的共享和协作更加便捷。本文将介绍如何在Vue2项目中使用@vue-office/docx、@vue-office/excel和@vue-office/pdf这三个库来实现docx、xlsx和pdf文件的在线预览。

interest_ing_的博客 5084

VUE3中实现word的预览功能

VUE3中实现word的预览功能

Admans的专栏 5925

Vue实现文档在线预览功能,上传预览PDF、Word等office文件

Vue实现文档在线预览功能,上传预览PDF、Word等office文件

qq_49080170的博客 1万+

Vue3使用vue-office插件实现word预览

我们可以给input绑定一个change事件, 当我们选择了文件, change就会触发返回给我们一个event对象, 我们通过event对象中的属性就可以拿到我们的file对象了。其实并不然, 我们开发中还会遇到另一种情况, 就是通过文件上传的方式, 获取文件的ArrayBuffer或者blob来预览文档。获取到了之后, 我们需要使用FileReader身上的实例方法来读取我们的文件内容。随后, 我们赋值一个响应式数据, 用于我们的word展示。这样, 我们的代码就写完了, 我们看看效果。

hello.reader 5654

使用vue-office插件在线预览docx、.xlsx、pdf文件

vue-office是一个支持多种文件(docx、.xlsx、pdf)预览的vue组件库,支持vue2和vue3。

smallqiang的专栏 4535

如何用 vue-office 快速搭建文档在线预览服务

`vue-office` 是一个基于 Vue 的组件库,用于在 Web 应用中快速集成 Office 文档的在线预览功能。它支持 Word、Excel 和 PowerPoint 等多种格式,并提供了简洁的 API 接口和丰富的自定义选项。

九天的专栏 1482

vue3+ts预览和下载word,pdf,excel

vue3+ts预览和导出文件

感谢您阅读我的博客,如果您有任何问题或建议,请随时联系我。 7493

基于Jeecgboot3.9.0的文档管理系统(四)

基于Jeecgboot3.9.0的文档管理系统(四)

宁波阿成的博客 251

基于 Vue3 + VueOffice 的多格式文档预览组件实现(支持 PDF/Word/Excel/PPT)

本文介绍了一个基于Vue3和VueOffice的前端文档预览组件,支持PDF、Word、Excel和PPT四种主流格式。该组件具有以下特点:1)无需后端转换,前端直接预览;2)提供缩放、拖拽、双击重置等交互功能;3)完善的加载和错误处理机制;4)采用响应式设计和模块化代码结构。文章详细解析了组件的技术栈、实现原理、使用方法和常见问题解决方案,并提供了完整的代码实现,为开发者在Web项目中快速集成文档预览功能提供了参考。

爱好分享,不设VIP文章 6212

数字图像处理第九章笔记

目录一、腐蚀与膨胀1、腐蚀2、膨胀3、对偶性4、开操作与闭操作二、一些基本的形态学算法1、边界提取2、孔洞填充3、连通分量提取4、凸壳5、细化6、粗化7、骨架8、形态学重建三、灰度级形态学1、腐蚀和膨胀2、开运算和闭运算3、灰度级形态学算法 一、腐蚀与膨胀 1、腐蚀 腐蚀可以去除图像的某些部分。 2、膨胀 膨胀可以连接裂缝。 3、对偶性 膨胀和腐蚀彼此关于集合求补运算和反射运算是对偶的 4、开操作与闭操作 开操作:B对A先腐蚀,再进行膨胀 可以平滑物体轮廓,断开较窄的狭颈并消除较细的突出物。 闭操作

方悔读书迟 1375

线结构光三维重建(二):光平面标定与激光轮廓提取的实战优化

本文深入探讨了线结构光三维重建中的光平面标定与激光轮廓提取两大核心环节的实战优化。详细介绍了从棋盘格标定板法到自动化高鲁棒性标定的流程优化,并分享了针对复杂工业场景(如低对比度、高反光表面)的激光轮廓提取组合策略,旨在提升三维重建系统的整体精度与稳定性。

weixin_29057237的博客 331

Vue-Office企业级文档预览解决方案完全指南

Vue-Office是一个专为Vue生态系统设计的Office文件预览组件库,提供Word(.docx)、Excel(.xlsx)、PDF和PPT(.pptx)等多种文档格式的无缝预览体验。该解决方案支持Vue 2和Vue 3双版本,通过组件化设计实现按需集成,帮助开发者快速在Web应用中嵌入专业级文档预览功能。 ## 核心功能特色 Vue-Office具备以下突出特点: - 一站式解决方案:

gitblog_00624的博客 366

【Qt】QByteArray详解

对象共享同一份数据,直到修改时才进行深拷贝,以节省内存和计算资源。:可存储任意二进制数据(如图片、音频、协议数据),不依赖字符编码。与编码(如 UTF-8、Latin-1)之间的桥梁(例如。• 补零规则确保奇数字符串能正确解析,避免数据截断。:内部自动分配和释放内存,无需手动管理。将输入的字符串视为十六进制编码数据,返回实际数据长度(不包括结尾的。的输入必须是有效的十六进制字符(,但针对 Qt 框架做了优化。:处理加密后的二进制结果(如。• 如果输入字符串长度为奇数,• 若输入长度为奇数,自动在。

CSUC的博客 1598

Vue-Office在企业文档管理系统中的实战应用

企业文档管理系统需要满足多格式文档在线预览、基础编辑、版本管理和权限控制等功能。Vue-Office作为专门处理Office文档的前端库,完美支持Word、Excel、PPT的在线渲染,且与Vue3生态无缝集成。最近公司需要搭建一个内部文档管理系统,要求能够在线预览和编辑Word、Excel等办公文档。经过技术选型,我们最终选择了Vue-Office这个强大的前端组件库来实现这一需求。整个项目从构思到实现用了不到两周时间,Vue-Office的表现非常稳定,处理常见办公文档毫无压力。

AmberLeopard26的博客 938

STM32 IIC电量计LTC2944

LTC2944是一款电池电量计,设计用于端电压为3.6V至60V的多节电池。它测量电池充电和放电、电池电压、电流和自身温度。精密模拟库仑计数器通过电池正极端子与负载或充电器之间的检测电阻器对电流进行积分。电池电压、电池电流和硅温度由内部ADC测量。

baidu_34971492的博客 3161

【Claude Code】Unable to connect to API 报错原因与排查解决全流程

深入分析 Claude Code 中 Unable to connect to API 系列报错的根因,涵盖 ECONNREFUSED、ECONNRESET、ETIMEDOUT 等 6 种变体,提供从网络连通性检测、代理配置到 LLM 网关路由的完整排查路径,帮助开发者快速恢复 Claude Code 的正常使用。

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 2850

使用OnlyOffice在前端web页面中实现Office文件的编辑预览

本文介绍基于Vue3与.NET 10集成OnlyOffice实现文档在线预览与编辑的完整方案。通过Docker部署OnlyOffice Document Server,后端使用JWT验证生成文档访问令牌,前端调用JS API嵌入编辑器。重点实现文件列表展示、下载及回调接收功能,支持本地存储或FTP文件流处理,提升OA系统协作效率。

qq_28517845的博客 231

水与光的奇妙“切割之舞”:水导激光切割技术探秘

水导激光切割技术的诞生,是材料加工领域不断追求高精度、高质量加工的成果。传统激光切割技术在加工过程中,材料会因瞬间高温而产生热变形、热影响区大以及切割面粗糙等问题,这些弊端在对一些高精度、热敏性材料的加工中尤为突出 ,迫切需要一种新的技术来克服这些难题。水导激光切割技术的起源可以追溯到 20 世纪 80 年代。1986 年,德国公司 Aesculap-Werke AG 首次提出了将水流引入激光切割过程的创新想法,并制造出首代水导激光设备。不过,当时的技术尚处于雏形阶段,仅仅是在光纤出口添加了一小柱水流,激光

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1673

vue3在线预览pdf,word文档(转载)

转载自大佬 https://blog.youkuaiyun.com/dcl199728/article/details/144217704。页面使用方法 script部分。

Wilelm的博客 72

【11】GD32H7xx MPU记录

GD32H7xx系列MPU内存保护单元模块的使用记录

madao1234的博客 877

从win系统远程使用服务器中的nsight system、nsight compute

本文介绍了如何在Windows系统中远程使用服务器上的Nsight System和Nsight Compute工具。主要内容包括:1)双系统同步安装相同版本的Nsight工具,配置环境变量;2)命令行生成profile文件或直接运行分析;3)Windows远程连接服务器的配置方法;4)解决权限问题的具体方案,如修改文件夹权限或调整NVIDIA驱动配置。文章提供了详细的安装步骤和常见问题解决方案,适用于需要进行GPU性能分析和调试的开发人员。

Justinyh的博客 401

使用国产开源企业级文件管理系统基于 Spring Boot 3.5.x + Sa-Token + MyBatis Flex

构建的企业级文件管理系统后端,提供大文件分片上传、多格式预览、多云存储支持、权限控制等功能,并配套 Vue 3 前端。先部署基础版本跑通上传下载流程,再根据需要接入云存储和配置预览功能。:建议先体验基础功能,再逐步接入云存储与高级配置。Free-FS 是一个基于。

曼陀罗的博客 1073

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

vue实现在线预览office文件

最近在做电子档案,后端提供了文件的华为云的oss链接。已经实现了点击下载文件的功能。但是呢,他们又希望常规的文件,可以直接点击预览,不需要下载。 按道理说,做文件的在线预览,买个第三方服务什么的,后端部署一下服务,前端对接一下,就通通搞定。 顶不住第三方基本上是要money的。那不想掏money,还有什么解决方法呢。 方法一 用微软的office online进行在线预览 https://view.officeapps.live.com/op/view.aspx?src=文件地址 例:https://v.

weixin_42190844的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Vue实现在线文档预览

本次实现的文档预览的类型有:docx, xlsx, pptx, pdf,以及纯文本、代码文件和各种图片、视频格式的在线预览

不愿意做鱼的小鲸鱼の博客 5685

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Vue-Office终极指南:轻松实现Office文档在线预览

在现代Web应用开发中,Office文档预览已成为不可或缺的核心功能。无论是企业办公系统、在线教育平台还是个人项目,用户都需要能够直接在浏览器中查看Word、Excel、PDF等文件。Vue-Office作为专为Vue生态设计的完整解决方案,让文档预览变得前所未有的简单。 ## 为什么你需要Vue-Office 在日常开发中,处理Office文档预览往往面临诸多挑战:兼容性问题、性能瓶颈、用户

gitblog_00313的博客 884

前端【vue】实现文档在线预览功能,在线预览pdf、word、xls、ppt等office文件

前端江太公 前端实现文档在线预览功能 最直接的就是使用XDOC 文档云服务 XDOC可以实现预览以DataURI表示的DOC文档,此外XDOC还可以实现文本、带参数文本、html文本、json文本、公文等在线预览,具体实现方法请看官方文档下面这种方式可以实现快速预览word但是对文件使用的编辑器可能会有一些限制 XDOC文档预览服务接口简单,只需要传入文档地址 XDOC文档预览云服务:https://view.xdocin.com/. 看看XDOC如何做Word文档预览: https://view..

江一铭 1万+
上一篇: Windows下n8n部署避坑指南:从npx报错到成功运行的完整流程
下一篇: 从NALU解析到播放器兼容:H.264 Annex B格式的完整处理流程详解
code8
博客等级 码龄17年 65粉丝 1720原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值