要实现 word 、pdf 在线预览。
目前实现思路是 PDF 转图片,然后通过图片实现预览。
Word 的话,先转 PDF ,然后 PDF 再转图片。
感觉超级繁琐啊。
刚弄完 PDF 转图片,效果勉强能看,有的图片会莫名其妙地丢部分文字,报错:
Can't find CID font "????". Attempting to substitute CID font /Adobe-GB1 for /????, see doc/Use.htm#CIDFontSubstitution. Loading a TT font from /usr/share/ghostscript/9.53.3/Resource/CIDFSubst/DroidSansFallback.ttf to emulate a CID font Adobe-GB1 ... Done.
猜测是字体丢失导致的。
看别人做的都挺好的,咋自己实现起来这么难呢。
有没有做过的大佬,一般是咋实现的。
word 转 PDF 咋转,现在还茫然中。
![]() |
3
mesh 6 天前
pdf 预览直接去找个库不就行了
|
4
horizon 6 天前
word 的搜一下,例如
https://juejin.cn/post/6844903561017425927 |
![]() |
5
jatesun 6 天前
直接 onlyoffice 不就好了。
|
6
jorneyr 6 天前 ![]() 使用 LibreOffice 把 Word, PPT 等转为 PDF ,然后 pdf.js 在线显示 PDF 。
|
![]() |
7
wusheng0 6 天前
pdf 看需求吧,一般浏览器对这个支持都挺好,直接 iframe 加载就行
https://juejin.cn/post/7117521871221817375#heading-4 |
![]() |
8
78786381 6 天前
你需要的是 wps
|
![]() |
9
ufan0 6 天前
接入 WPS SDK 吧
|
10
Fca 6 天前
onlyoffice
|
11
han3sui 6 天前
onlyoffice 可以的
|
![]() |
12
bojackhorseman 6 天前
pdf 简单,iframe 加载,浏览器自带阅读器
|
![]() |
13
Ritter 6 天前
onlyoffice 就是麻烦 有钞能力当我没说
|
![]() |
14
taozywu 6 天前
其实有很多办法了
1. 可以用第三方 api 搜下 2. 可以用 pdf.js 3. 可以将 word 、pdf 统一转 html 可以使用 pdf2htmlEX |
15
crissx 6 天前
java 开源后端 kkfileview
第三方 Office Web 365, 这个第三方是我见过效果最好的,有一定费用 |
16
hoopz 6 天前
字体那个不大好弄。如果 pdf 内嵌了字体,但是内嵌的有问题的话,react-pdf-viewer 显示出来的会丢字。直接用 chrome 打开 pdf 的话,感觉 chrome 会使用默认字体(?),内容不会少,但是格式可能会有问题。
|
![]() |
17
snowlee 6 天前
|
18
vikaptain 6 天前
pdf: 如果什么要求都没有,直接开个新标签页,如果要在嵌在自己的页面中有 pdf.js 库可以用
word:如果不想转 pdf ,只是预览的话可以调用微软的 Office Web Viewer(要求一: 必须是互联网可以公开访问, 要求二: 必须是域名且必须是默认端口) |
19
dq19871123 6 天前
微软有一套 Office Web Apps Server 解决方案,可以实现 Office 文档的在线预览和编辑,把 api 返回的 iframe 加到网页中就行
|
![]() |
20
rockxsj 6 天前
参考下 alist 的实现啊 客户端集成一个 js 就行
|
![]() |
21
shadowyue 6 天前
如果你不说预算,我建议你直接使用微软的 onedrive 网盘,
里边的文件都能自动在线预览,简单又省心。 企业版应该还能做权限控制。 其它的方案,就像你说的, work 转 pdf ,pdf 转图片,这个是我目前体验过的最稳定的方案。 楼上其它的预览方案,如果是页面直接加载 pdf 文件预览,核心都是依赖 pdf.js 这个库。 这个方案的有几个不稳定因素,一个是耗费资源比较多,加载也慢。 因为原理是在前端页面用 canvas 直接把 pdf 内容画出来。 如果你 pdf 文件比较大就比较吃瘪了。 此外就是可能会出现一些展示错误,因为 pdf 文件格式太复杂了, 如果你的 pdf 原文件就复杂,很可能遇到展示错误的问题。 好处就是展示的不是原始文件还是画布,想偷到原始 pdf 文件会困难一些。 还有方案就是直接使用浏览器自带的 pdf 预览功能, 这个方案很完美,就是没法做权限控制,别人直接右键另存为就可以下载了。 |
![]() |
22
malagebidi 6 天前 via Android
pdf 转图片可以用 imagemagick ,分辨率设置大点效果挺好
|
![]() |
23
listen2wind 6 天前
|
![]() |
24
YorkWong 6 天前
pdf 用 embed 标签
word 通过 mammoth.convertToHtml 转成 html 预览 「最近刚做过相关功能」 |
![]() |
25
ily433664 6 天前
支持多种格式,单纯预览还可以
https://github.com/kekingcn/kkFileView |
![]() |
26
jjshare123 OP |
![]() |
27
jjshare123 OP |
28
busier 6 天前 via iPhone
前些时刚处理类似问题
Python 里面有个 html 转 pdf 的库 把 word 搞成 html 先 |
![]() |
29
jjshare123 OP @shadowyue 是的,我附议老哥的观点。现在尝试的就是 word 转 PDF ,PDF 转图片,目前准备落地的也是这个方案,PDF 转图片,已经实现了,word 转 PDF 还在折腾,可以预见后面 excel 、ppt 转 PDF 也得做。
不知道老哥有没有推荐的落地方案。感谢。 |
30
jorneyr 6 天前 ![]() > 目前看肯定是要用 word 的解析库了,要么在线的 API ,要么付费的 sdk ,要么开源的库:
安装一个 LibreOffice ,然后调用命令就可以转了,支持 Linux 。 命令参考: libreoffice --headless --convert-to pdf --outdir /path/to/output /path/to/your/document.docx |
![]() |
31
jjshare123 OP @busier 我还没有做到 word 转 PDF ,大佬实现出来的效果咋样?期望展开讲讲
|
![]() |
32
jjshare123 OP |
![]() |
33
Mandelo 6 天前
服务器将 word 转 pdf ,预览用 pdf.js 就行了
|
35
Fca 5 天前
@jjshare123 #32
![]() |
36
ClearMoki 5 天前
我司现在用的 onlyoffice 的目前看起来效果还行
|
![]() |
37
vaaagle 5 天前
直接用 java 的开源 kkfile,你遇到的坑他基本都遇到了一遍。
|
![]() |
38
jjshare123 OP @ClearMoki 谢谢呀,嗯,你们公司是本地搭建给自己用的吗?还是用的在线 API 呀?
|
40
delflare505 4 天前 via Android
品牌) 8@78786381 8 )⁸8⁸8⁸88
|
41
YILSLIN 4 天前 ![]() 我用的 docx-preview 库,纯前端效果还不错
|
![]() |
42
dedemao 4 天前
找一台 windows 服务器,安装 office 或者 wps ,然后调用他们自带的 com 组件来实现 word 转 pdf 。
|
![]() |
43
Ritter 4 天前
@jjshare123 有钱就买 没钱就自己搭
|
![]() |
44
latiao 4 天前
我们公司有发票和产品资料快速展示并下载的需求,也是找了好多方法,整个人都搞疯了,后面很长一段时间用的是 kkFileView ,但是出现了各种各样的问题,这里就不多说了
总之,后面无意中找到了一个解决方案(仅针对在线预览),一位大佬写的 vue 组件,可以纯前端预览 docx 、excel 、pdf ,链接给你了,自己看看把 https://501351981.github.io/vue-office/examples/docs/ |
45
ClearMoki 3 天前
@jjshare123 他有一个 react 的组件库,然后需要服务端写一个生成 token 的方法就没了,非常简单
|