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/

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


在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】链表(单链表与双链表实现+原理+源码)

博主介绍&#xff1a;✌全网粉丝喜爱、前后端领域优质创作者、本质互联网精神、坚持优质作品共享、掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战✌有需要可以联系作者我哦&#xff01; &#x1f345;附上相关C语言版源码讲解&#x1f345; &#x1f44…

Android14源码剖析:MediaPlayer与MediaPlayerService区别?(五十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

论文阅读 1| 从仿真域到实验域无监督轴承故障诊断的新型联合传输网络

标题&#xff1a;Novel Joint Transfer Network for Unsupervised Bearing Fault Diagnosis From Simulation Domain to Experimental Domain 期刊&#xff1a;IEEE-ASME TRANSACTIONS ON MECHATRONICS &#xff08;2022&#xff09; 作者&#xff1a;Yiming Xiao, Haid…

初识 JVM

什么是JVM JVM 全称是 J ava V irtual M achine&#xff0c;中文译名 Java虚拟机 。 JVM 本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行 Java字节码文件 。 JVM的功能 Java语言如果不做任何优化&#xff0c;性能不如C、C等语言。 Java需要实时解释&…

【Foxmail】客户端发送邮件错误:SSL Recv :服务器断开连接, errorCode: 6

Foxmail客户端发送邮件提示&#xff1a;SSL Recv :服务器断开连接, errorCode: 6 错误代码 处理方式&#xff1a; 去邮箱生成新的16位授权码&#xff0c;输入到 密码框 内即可。 注&#xff1a;一旦开通授权码&#xff0c;在Foxmail验证时 密码框 里输入的就是 授权码

【Android】在WSA安卓子系统中进行新实验性功能试用与抓包(2311.4.5.0)

前言 在根据几篇22和23的WSA抓包文章进行尝试时遇到了问题&#xff0c;同时发现新版Wsa的一些实验性功能能优化抓包配置时的一些步骤&#xff0c;因而写下此篇以作记录。 Wsa版本&#xff1a;2311.40000.5.0 本文出现的项目&#xff1a; MagiskOnWSALocal MagiskTrustUserCer…

【软考中级】3天擦线过软考中级-软件设计师

前提&#xff1a;已有数据结构、操作系统、计算机网络、数据库基础 &#xff08;风险系数较高&#xff0c;请谨慎参考&#xff09; 贴一个成绩单hhhh 弯路&#xff1a;很早之前有看过一遍网上的软考课程&#xff0c;也记录了一些笔记&#xff0c;然而听完还是啥都记不住。 推…

Text Workflow 1.8.2 mac文本转换处理

Text Workflow for mac是一款易于使用但功能强大的应用程序&#xff0c;可将任何文本转换成您需要的格式&#xff0c;以满足您的需求。Text Workflow具有广泛&#xff08;并不断增长&#xff09;的文本转换操作列表&#xff0c;可以实现各种功能。 软件下载&#xff1a;Text Wo…

RKE快速搭建离线k8s集群并用rancher管理界面

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 本文记录使用RKE快速搭建一套k8s集群过程&#xff0c;使用的rancher老版本2.5.7&#xff08;当前最新版为2.7&#xff09;。适用…

linux的安装配置

文章目录 1.centos7安装2.如何进行一个网络的开启3.客户端Xshell和Xftp的一个使用4.换源 1.centos7安装 1.我是在虚拟机里面重装了一个liunx系统,首先我们新建一个虚拟机 2.前面东西都不需要我们进行一个选择&#xff0c;到图中的这一步我们选择一个liunx,版本的话我们选择一个…

Go 复合数据类型

1. 数组&#xff08;array&#xff09;&#xff08;OK&#xff09; 数组数组的概念数组是具有固定长度且拥有零个或多个相同数据类型元素的序列 i. 元素的数据类型相同 ii. 长度固定的序列 iii. 零个或多个元素的序列 与 slice 对比 由于数组的长度固定&#xff0c;所以在 G…

c# ADODB.Recordset实例调用Fields报错

代码&#xff1a; using System; using System.CodeDom; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ADODB;namespace ConsoleApp1 {internal class Programre{static ADODB.Recordset recordsetInstance…

el-table分组合并行

接到一个需求&#xff0c;把数据按照天 分组显示 时间单独一行&#xff0c;数据在一块 这里新知识点&#xff1a;span-method const plist ref([{ dateHeader:2024-01-23, list:[{dateHeader:2024-01-23},{name:数据1,id:1},{name:数据2,id:2}] }, { dateHeader:2024-01-24,…

国产芯片电子秤方案CSU8RP1185

在生活中&#xff0c;买菜时常常出现缺斤少两的情况&#xff0c;这种情况多是商家秤有很大问题&#xff0c;往往消费者是最吃亏的&#xff0c;这种情况下&#xff0c;我们最好是带个吊钩电子秤&#xff0c;测量菜的重量&#xff0c;有问题直接拨打举报电话举报商家&#xff0c;…

muduo网络库剖析——线程Thread类

muduo网络库剖析——线程Thread类 前情从muduo到my_muduo 概要框架与细节成员函数使用方法 源码结尾 前情 从muduo到my_muduo 作为一个宏大的、功能健全的muduo库&#xff0c;考虑的肯定是众多情况是否可以高效满足&#xff1b;而作为学习者&#xff0c;我们需要抽取其中的精…

【ElasticSearch】 ElasticSearch serverless架构介绍(查询写入分离,计算存储分离)

ElasticSearch 推出了全新的serverless架构&#xff0c;将查询(search)和写入(indexing)分离&#xff0c;将计算(computing)和存储(storage)分离&#xff0c;极大提高了 ES 的可运维性&#xff0c;降低了学习成本。本文将先介绍下serverless含义&#xff0c;再介绍ElasticSearc…

ESP8266模块双模式(AP+STA)共存同时与电脑及手机进行UDP通信

1.准备工作: 硬件: ESP8266模块 USB连接线: 连接ESP8266模块到电脑 如果电脑没有USB接口,准备一个USB HUB: USB HUB 连接电脑Type-C接口,ESP8266模块连接USB HUB 软件: 安装Arduino IDE 2.2.1 在Arduino IDE中安装esp8266开发板(USB没识别芯片,要安装对应操作系统CH2340或…

LiveVideoStack人物专访:深耕多媒体二十载,他怎么看未来的视频云?

抓住已知的&#xff0c;迎面未知的。 编者按&#xff1a; 大模型、降本、出海&#xff0c;是多媒体从业者交流的高频词&#xff0c;内容与交互的需求层出不穷&#xff0c;大模型与AI的演进目不暇接&#xff0c;让增速低走的视频云迎面新的机遇和挑战。作为一个跨越中美多媒体行…

【面试深度解析】字节后端日常实习一面这么问吗?

&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308; 欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术的推送&#xff01; 在我后台回复…

上门回收小程序,打造回收新模式

近年来&#xff0c;我国一直秉持着环保绿色的发展理念&#xff0c;为了减少资源浪费&#xff0c;旧物回收成为了人们处理废弃物品的方式。目前&#xff0c;我国回收市场规模大约能达到3.58亿元&#xff0c;在我国经济的稳定增长和环保意识的提高下&#xff0c;回收市场规模还将…