Word、PDF 文件在线预览是怎么实现的呀?快被折腾疯了

8 天前
 jjshare123

要实现 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 咋转,现在还茫然中。

3280 次点击
所在节点    程序员
45 条回复
shadowyue
8 天前
如果你不说预算,我建议你直接使用微软的 onedrive 网盘,
里边的文件都能自动在线预览,简单又省心。
企业版应该还能做权限控制。

其它的方案,就像你说的,
work 转 pdf ,pdf 转图片,这个是我目前体验过的最稳定的方案。

楼上其它的预览方案,如果是页面直接加载 pdf 文件预览,核心都是依赖 pdf.js 这个库。
这个方案的有几个不稳定因素,一个是耗费资源比较多,加载也慢。
因为原理是在前端页面用 canvas 直接把 pdf 内容画出来。
如果你 pdf 文件比较大就比较吃瘪了。
此外就是可能会出现一些展示错误,因为 pdf 文件格式太复杂了,
如果你的 pdf 原文件就复杂,很可能遇到展示错误的问题。
好处就是展示的不是原始文件还是画布,想偷到原始 pdf 文件会困难一些。

还有方案就是直接使用浏览器自带的 pdf 预览功能,
这个方案很完美,就是没法做权限控制,别人直接右键另存为就可以下载了。
malagebidi
8 天前
pdf 转图片可以用 imagemagick ,分辨率设置大点效果挺好
listen2wind
8 天前
YorkWong
8 天前
pdf 用 embed 标签
word 通过 mammoth.convertToHtml 转成 html 预览
「最近刚做过相关功能」
ily433664
8 天前
支持多种格式,单纯预览还可以
https://github.com/kekingcn/kkFileView
jjshare123
8 天前
@dode
@mesh
@horizon
@jorneyr
@bojackhorseman
@taozywu
@hoopz
@vikaptain
@shadowyue
@YorkWong
谢谢各位的建议,嗯,pdf.js 或者基于 浏览器本身的对 PDF 的支持来做的话,遇到大的文件,体验会特别不好,尤其在手机上的话。
所以第一感受是转图片,然后访问图片。

不过转图片的坑也很多,目前碰到的就是产生图片,有时候会出现文字内容不出现的问题。
jjshare123
8 天前
@jatesun
@jorneyr
@78786381
@ufan0
@Fca
@han3sui
@Ritter
@taozywu
@crissx
@snowlee
@vikaptain
@shadowyue
@malagebidi 谢谢各位,word 转 PDF ,目前看肯定是要用 word 的解析库了,要么在线的 API ,要么付费的 sdk ,要么开源的库。
我个人倾向开源库,可控性高一些。
大家实践中用的什么方案?
busier
8 天前
前些时刚处理类似问题

Python 里面有个 html 转 pdf 的库

把 word 搞成 html 先
jjshare123
8 天前
@shadowyue 是的,我附议老哥的观点。现在尝试的就是 word 转 PDF ,PDF 转图片,目前准备落地的也是这个方案,PDF 转图片,已经实现了,word 转 PDF 还在折腾,可以预见后面 excel 、ppt 转 PDF 也得做。
不知道老哥有没有推荐的落地方案。感谢。
jorneyr
8 天前
> 目前看肯定是要用 word 的解析库了,要么在线的 API ,要么付费的 sdk ,要么开源的库:

安装一个 LibreOffice ,然后调用命令就可以转了,支持 Linux 。

命令参考: libreoffice --headless --convert-to pdf --outdir /path/to/output /path/to/your/document.docx
jjshare123
8 天前
@busier 我还没有做到 word 转 PDF ,大佬实现出来的效果咋样?期望展开讲讲
jjshare123
8 天前
@jorneyr 谢谢,后面一定要试试。我在想另外一个方案,不知道可行性怎么样。

模拟人肉截图,自动打开 word ,然后一页一页的截图,存为图片。

不知道程序化这个过程怎么走。
Mandelo
8 天前
服务器将 word 转 pdf ,预览用 pdf.js 就行了
Fca
7 天前
Fca
7 天前
ClearMoki
7 天前
我司现在用的 onlyoffice 的目前看起来效果还行
vaaagle
7 天前
直接用 java 的开源 kkfile,你遇到的坑他基本都遇到了一遍。
jjshare123
7 天前
@ClearMoki 谢谢呀,嗯,你们公司是本地搭建给自己用的吗?还是用的在线 API 呀?
jjshare123
6 天前
@jatesun
@Fca
@han3sui
@Ritter
@Fca
谢谢各位老哥,请问大家是自己搭建了自己用的,还是用的 API 或者云服务呀?
delflare505
6 天前
品牌) 8@78786381 8 )⁸8⁸8⁸88

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1071913

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX