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

2024-01-23 08:36

本文主要是介绍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/

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


在这里插入图片描述

这篇关于OpenSource - 文件在线预览模块(多格式转 PDF 文件)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/635829

相关文章

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

使用Python实现批量分割PDF文件

《使用Python实现批量分割PDF文件》这篇文章主要为大家详细介绍了如何使用Python进行批量分割PDF文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、架构设计二、代码实现三、批量分割PDF文件四、总结本文将介绍如何使用python进js行批量分割PDF文件的方法

Python利用自带模块实现屏幕像素高效操作

《Python利用自带模块实现屏幕像素高效操作》这篇文章主要为大家详细介绍了Python如何利用自带模块实现屏幕像素高效操作,文中的示例代码讲解详,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、获取屏幕放缩比例2、获取屏幕指定坐标处像素颜色3、一个简单的使用案例4、总结1、获取屏幕放缩比例from

nginx-rtmp-module模块实现视频点播的示例代码

《nginx-rtmp-module模块实现视频点播的示例代码》本文主要介绍了nginx-rtmp-module模块实现视频点播,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录预置条件Nginx点播基本配置点播远程文件指定多个播放位置参考预置条件配置点播服务器 192.

使用Python实现PDF与SVG互转

《使用Python实现PDF与SVG互转》SVG(可缩放矢量图形)和PDF(便携式文档格式)是两种常见且广泛使用的文件格式,本文将详细介绍如何使用Python实现SVG和PDF之间的相互转... 目录使用工具使用python将SVG转换为PDF使用Python将SVG添加到现有PDF中使用Python将PD

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

IDEA如何将String类型转json格式

《IDEA如何将String类型转json格式》在Java中,字符串字面量中的转义字符会被自动转换,但通过网络获取的字符串可能不会自动转换,为了解决IDEA无法识别JSON字符串的问题,可以在本地对字... 目录问题描述问题原因解决方案总结问题描述最近做项目需要使用Ai生成json,可生成String类型

基于C#实现PDF文件合并工具

《基于C#实现PDF文件合并工具》这篇文章主要为大家详细介绍了如何基于C#实现一个简单的PDF文件合并工具,文中的示例代码简洁易懂,有需要的小伙伴可以跟随小编一起学习一下... 界面主要用于发票PDF文件的合并。经常出差要报销的很有用。代码using System;using System.Col

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后