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

网站备案如何取消接入滕州网站建设优化

网站备案如何取消接入,滕州网站建设优化,wordpress做第二个,网站后台数据应该怎么做私有 Word 文件在线预览方案#xff08;.doc/.docx 转 PDF#xff09; 前言 由于 .doc 和 .docx Word 文件 无法在浏览器中直接预览#xff08;尤其在私有 API 场景下#xff09;#xff0c;常见的 Content-Disposition: inline 并不能生效。因此#xff0c;本方案通过…私有 Word 文件在线预览方案.doc/.docx 转 PDF 前言 由于 .doc 和 .docx Word 文件 无法在浏览器中直接预览尤其在私有 API 场景下常见的 Content-Disposition: inline 并不能生效。因此本方案通过 后端转换为 PDF 文件并将其以文档流形式返回前端达到可在线阅读的效果。 效果如图 实现流程概览 前端请求文件非下载模式后端判断文件扩展名是否为 .doc 或 .docx使用 LibreOffice 将 Word 文件转换为 PDF待 PDF 生成后通过 res.sendFile() 发送给前端可选临时 PDF 文件使用后自动删除 实现步骤 第一步后端判断 Word 文件类型并构建 PDF 路径 const docxRegex /\.(docx?)$/i; // 支持 .doc 和 .docx忽略大小写if (type ! download docxRegex.test(filePath)) {const pdfPath filePath.replace(docxRegex, .pdf); // 替换为 PDF 路径... }第二步安装 LibreOffice用于文件转换 Ubuntu / Debian sudo apt update sudo apt install libreoffice -yCentOS / RHEL sudo yum install libreoffice -y第三步安装中文字体避免 PDF 中文乱码 推荐使用开源思源字体Noto 字体家族 Ubuntu / Debian sudo apt install fonts-noto-cjk -yCentOS / RHEL sudo yum install google-noto-sans-cjk-ttc -y第四步转换 Word 文件为 PDF 并返回给前端 const { exec } require(child_process); const fs require(fs);exec(libreoffice --headless --convert-to pdf ${filePath} --outdir ${uploadDir}, (error, stdout, stderr) {if (error) {console.error(转换文件失败:, error);return res.status(500).json({ message: 转换文件失败 });}const waitForPdf setInterval(() {if (fs.existsSync(pdfPath) fs.statSync(pdfPath).size 1000) {clearInterval(waitForPdf);res.setHeader(Content-Type, application/pdf);res.sendFile(pdfPath, (err) {if (err) {console.error(发送 PDF 文件失败:, err);return res.status(500).json({ message: 发送失败 });}// 清理临时文件fs.unlink(pdfPath, (unlinkErr) {if (unlinkErr) {console.error(删除 PDF 失败:, unlinkErr);} else {console.log(临时 PDF 已删除);}});});}}, 100); // 每 100ms 检查一次 PDF 文件生成状态 });补充建议 你可以在服务器上缓存转换后的 PDF避免重复转换建议加入错误重试机制比如检测失败后尝试转换 2 次如对性能有要求可使用转换任务队列如 bull.js 示例前端预览 可以获取 // 查看文档 async viewDocument(fileData) {let update { filename: fileData.filename, userId: this.$store.state.userInfo.userId }try {// 设置 responseType 为 blob 来正确处理二进制数据const response await this.$apiRequest(get, /ser/xxxx, update, , {responseType: blob});if(response.status 200) {// 直接使用返回的 blob 数据const blob response.data;// 创建临时 URLconst blobUrl URL.createObjectURL(blob);// 在新窗口中打开文件const newWindow window.open(blobUrl, _blank);// 清理临时 URL延迟清理确保文件能正常打开setTimeout(() {URL.revokeObjectURL(blobUrl);}, 1000);// 如果无法打开新窗口提供下载选项if (!newWindow) {this.downloadFile(blob, fileData.name);}}} catch (error) {console.error(查看文档失败:, error);this.$message.error(查看文档失败请重试);} },备注 注意responseType: blob在接口架构文件里配置一下。
http://www.pierceye.com/news/109115/

相关文章:

  • 企业网站如何做自然搜索phpcms 网站转移
  • 站内优化怎么做建设设计网站
  • 如何建设机器人教育网站上海有名的网络公司
  • 网站二级目录做网站淄博网站建设 很乱
  • 常州做网站企业海口网站开发建设
  • 做php网站用什么软件开发wordpress页面图片轮播图
  • 做网站页面大小多大8上的信息课做网站作业
  • 自己做微网站创欧科技 网站建设
  • 网站设计师大学学什么专业北京燕华工程建设有限公司网站
  • 广州专业网站建设企业wordpress 数据库修改
  • 淮南装饰公司网站建设seo 网站树
  • 设计素材下载网站网络营销课程设计报告
  • 安庆公司做网站搜索引擎收录提交入口
  • 城固网站建设wordpress主题谁的最好
  • 国外建站企业北京鑫创网站建设
  • 网站做视频wordpress插件手动升级
  • wordpress收不到网站没有收款接口网站怎么做收款
  • 信阳做网站推广用tornado做网站
  • 网站开发与数据库ppt成都优化网站建设
  • 毕业设计静态网站建设选题依据企业网络营销的优势
  • 网站图片动态换名网站充值支付宝收款怎么做
  • 蜘蛛网是个什么网站做特卖的购物网站
  • 从零学做网站古典 网站模板
  • h5网站模板开发网站后台哪些功能需要前端配合
  • 网站建设 宜宾佛山企业网站自助建站
  • 苏宁易购网站建设 的定位手机网站制作招聘
  • 个人网站备案申请360老是提示危险网站
  • 建网站哪个好 优帮云自己怎么注册域名
  • 做3ds磁铁卡网站大连旅顺博物馆
  • 邢台市住房和城乡建设局网站大连网站推广机构