OpenSource - 文件在线预览模块(多格式转 PDF 文件)

文章目录

  • 文件在线预览模块(多格式转PDF文件)
    • 现已支持格式如下
    • 界面展示
    • 运行方式
    • 接口介绍
      • 文件上传
      • 文件转 PDF
      • 文件转图片
      • 文件转SVG
    • 参数配置
    • 其他说明
    • 项目关联关键词
    • 文档转换预览技术说明
      • 同步转换
      • 异步转换
    • 主要技术
      • 乱码问题处理
      • 帮助文档
  • 前端预览弹出层用法
      • $Preview 参数
      • $Preview 方法
          • show 打开弹窗
          • closeAll 关闭所有弹窗
          • error 当解析文件路径错误时执行
          • formatType 粗解析某个路径的文件格式
          • formatShowType 返回某个路径的文件格式
  • 方案二 ASPOSE

在这里插入图片描述


文件在线预览模块(多格式转PDF文件)

在这里插入图片描述

说明:本项目是将一些常见的技术做了整合,帮助那些需要在线预览文件或正在寻找 office 转 pdf 文件预览的同学。

2023新增说明: 《文档转换预览技术说明》:https://www.yuque.com/hcwdc/open/pos2lih1vi3248g9
已经将部分的教程进行了整合优化,放到了语雀的平台上,原先的老教程依然可以看。

基于这个技术做的知识库管理系统:https://gitee.com/hcwdc/knowledgebase

已经实现功能如下:

  • 多格式转换为 PDF 格式
  • OFFICE 转换为 PNG 格式
  • 在线预览文件
  • 手机预览查看文件

现已支持格式如下

  • 图片预览:.gif、bmp、jpeg、jpg、png、ico、svg
  • 文档预览:.doc、docx、xls、xlsx、ppt、pptx
  • PDF 文件:pdf、PDF 文件压缩
  • 文本文件:txt
  • 音频文件:mp3、ogg、wav
  • 视频文件:mp4、webm、mkv

界面展示

本地启动后访问页面地址为:http://localhost:8301/index
在这里插入图片描述

运行方式

【必须】程序运行所在环境安装 LibreOffice,PDF 转换基于 LibreOffice 完成(OpenOffice 也一样可用)
安装参考教程:http://wiki.nooss.cn/archives/420.html
Linux 安装字体(不安装会出现乱码问题):http://wiki.nooss.cn/archives/406.html

  • 1、直接复制源码里的文件搬家至你自己的代码中
  • 2、将此 Demo 打包成为一个 jar 引入到自己的项目中

接口介绍

文件上传

http://ip:port/demo/upload

文件转 PDF

http://ip:port/demo/toPdf

文件转图片

ps:会先将文件转为 pdf,然后使用 pdfbox 转为图片

http://ip:port/demo/toPng

文件转SVG

ps:会先将文件转为 pdf,然后使用 pdfbox 转为svg

http://ip:port/demo/toSvg

参数配置

castle:upload:# 自行配置可访问的路径fileDomain: http://up.hcses.cn/pdftools  # 文件可访问的地址fileServerPath: /www/wwwroot/up.hcses.cn/pdftools/  # 原始文件的服务器存储位置

其他说明

  • 本示例转换 PDF 部分采用了LibreOffice工具
  • PDF 转换图片使用了PDFBox组件
  • 感谢hutool组件

项目关联关键词

word 转 pdf、word 转图片、office 格式转换、在线文件预览


文档转换预览技术说明

同步转换

即用户上传文档提交接口瞬间,系统会立即进行转换。

优点:用户一直在loading等待,转换完成可见数据。
缺点:同步转换容易造成页面卡顿,转换时间超长的情况下,系统接口会超时。

异步转换

即用户上传文档提交接口瞬间,系统不会立即进行转换,而是将文档放入转换队列,由后台的转换进程进行转换。

优点:大量文件可同时进行转换,不会造成卡顿。
缺点:无法实时的查看数据。


主要技术

名称用途地址
Libreofficeoffice转pdfhttps://zh-cn.libreoffice.org/
PDFBoxpdf转图片https://pdfbox.apache.org/
PDF2SVGpdf转svghttps://github.com/dawbarton/pdf2svg
Calibreepub、mobi等电子书转为pdfhttps://github.com/kovidgoyal/calibre
MuPDFPDF和XPS解析和渲染引擎,可用于将PDF转为svg、png等图片https://www.mupdf.com/
SVGO压缩svg图片大小https://github.com/svg/svgo
GZIP压缩对svg文件压缩-----

乱码问题处理

乱码主要是由字体引起的,安装字体即可解决该问题。

帮助文档

名称地址
《Linux环境安装Libreoffice》https://www.yuque.com/hcwdc/open/rydxw6sb6yhqvu0b
《Windows环境安装Libreoffice》https://www.yuque.com/hcwdc/open/qygk4dubimetzosh
《Linux字体安装》https://www.yuque.com/hcwdc/open/oviiv0v5e724um6s

前端预览弹出层用法

在页面 head 部分引入 <script src="preview.js"></script>

$Preview 参数

参数说明
type传入文件的粗类型txt / img / pdf / mp3 / mp4
modal所有打开的弹窗列表Array<Modal>

$Preview 方法

show 打开弹窗
window.$Preview.show : (urls: string | Array<string>, options: Options) => $Preview// e.g
window.$Preview.show('http://123.png')
window.$Preview.show(['http://123.png', 'http://456.png'])
window.$Preview.show(['http://123.png', 'http://456.png'], {active: 1
})urls: Array<string> // 展示的文件地址列表
options: {active: number, // 打开时展示第几张 下标从 0 开始
}
closeAll 关闭所有弹窗
window.$Preview.closeAll : () => void
error 当解析文件路径错误时执行

暂时处理为 alert
可以根据需要自行覆盖

window.$Preview.error : (msg) => void/**覆盖代理使用覆盖后 alert 将不再弹出
*/
window.$Preview.error = (msg) => {console.log(msg)
}
formatType 粗解析某个路径的文件格式
window.$Preview.formatType : (url: string) => 'txt' | 'img' | 'pdf' | 'mp3' | 'mp4'
formatShowType 返回某个路径的文件格式
window.$Preview.formatShowType : (url: string) => FileType

方案二 ASPOSE

https://www.aspose.com/zh/

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/423430.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件设计师——项目管理(二)

&#x1f4d1;前言 本文主要是【项目管理】——软件设计师——项目管理的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304…

docker容器快速安装启动ES

1、安装 docker a、使用 Homebrew 安装 brew install --cask --appdir/Applications docker b、手动下载安装 1、安装包下载地址&#xff1a;Install Docker Desktop on Mac | Docker Docs 根据自己的笔记本型号选择&#xff0c;我这边选择的是 intel chip 2、下载安装即可&a…

读AI3.0笔记04_视觉识别

1. 两次飞跃 1.1. ConvNets是当今计算机视觉领域深度学习革命的驱动力 1.1.1. 20世纪80年代便由法国计算机科学家杨立昆提出&#xff0c;而他则是受到了福岛邦彦提出的神经认知机&#xff08;Neocognitron&#xff09;的启发 1.2. ImageNet竞赛被看作计算机视觉和人工智能进…

服务器与Ajax

1.初识Ajax Asynchronous JavaScript and XML&#xff08;异步的 JavaScript 和 XML&#xff09;。 术语ajax最早产生于2005年&#xff0c;Ajax表示Asynchronous JavaScript and XML(异步JavaScript和XML)&#xff0c;但是它不是像HTML、JavaScript或CSS这样的一种“正式的”技…

瑞_力扣LeetCode_104. 二叉树的最大深度

文章目录 题目 104. 二叉树的最大深度题解后序遍历 递归实现后序遍历 迭代实现层序遍历 &#x1f64a; 前言&#xff1a;本文章为瑞_系列专栏之《刷题》的力扣LeetCode系列&#xff0c;主要以力扣LeetCode网的题进行解析与分享。本文仅供大家交流、学习及研究使用&#xff0c;禁…

【Go面试向】Go程序的执行顺序

【Go】Go程序的执行顺序 大家好 我是寸铁&#x1f44a; 总结了一篇Go程序的执行顺序的文章✨ 喜欢的小伙伴可以点点关注 &#x1f49d; Go程序内容 go程序通常包含: 包、常量、变量、init()、main()等元素 下面从这几个方面分别去梳理&#xff01; 包的执行顺序 程序中的包 …

容器技术2-镜像与容器储存

目录 一、镜像制作 1、ddocker build 2、docker commit 二、镜像存储 1、公共仓库 2、私有仓库 三、镜像使用 四、容器存储 1、镜像元数据 2、存储驱动 3、数据卷 一、镜像制作 1、ddocker build 基于 Dockerfile 自动构建镜像 其机制为&#xff1a;每一行都会基于…

JavaEE-SSM-订单管理-前端实现

前端&#xff1a;订单管理 3.1 回顾 axios.get("路径") .then( response > {}) .catch( error > {})//async 和 await async function() {let response await axios.get("路径") }3.2 环境搭建 3.2.1 创建项目 3.2.2 端口号 80 3.2.3 axios使用…

AnimatedDrawings:让绘图动起来

老样子&#xff0c;先上图片和官网。这个项目是让绘制的动画图片动起来&#xff0c;还能绑定人体的运动进行行为定制。 快速开始 1. 下载代码并进入文件夹&#xff0c;启动一键安装 git clone https://github.com/facebookresearch/AnimatedDrawings.gitcd AnimatedDrawingspip…

mysql InnoDB行记录格式

在介绍索引的文章已经知道。InnoDB的表数据被拆分成不同的数据页上&#xff0c;默认一个数据页大小是16kb&#xff0c;分布在聚簇索引的叶子节点上。被挂在B树上。一条行记录除了要保存每列具体数据值还会有一些标识位信息。另外对于超长数据存储也有特殊处理。 那么具体到一行…

UI设计中的插画运用优势(下)

6. 插画赋予设计以美学价值&#xff0c;更容易被接受 即使所有人都在分析和争论产品的可用性和易用性&#xff0c;大家在对美的追求上&#xff0c;始终保持着一致的态度。一个设计是否具备可取性&#xff0c;是否能够通过甲方、客户和实际用户&#xff0c;是每个设计人都需要面…

【ARMv8M Cortex-M33 系列 7 -- RA4M2 移植 RT-Thread 问题总结】

请阅读【嵌入式开发学习必备专栏 】 文章目录 问题小结栈未对齐 经过几天的调试&#xff0c;成功将rt-thead 移植到 RA4M2&#xff08;Cortex-M33 核&#xff09;上&#xff0c;thread 和 shell 命令已经都成功支持。 问题小结 在完成 rt-thread 代码 Makefile 编译系统搭建…