文章目录
- 一、问题来源
- 二、解决
- 三、题外话
近期在处理网盘和在线文件相关问题,面对的事比较多且杂,记录下。
问题: seafile
自身预览PDF文件,部分不显示
图片显示如下:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiQDOxEzX3xCZlhXam9VbsUmepNXZy9CXwJWZ3xCdh1mcvZ2Lc1zaHRGcWdUYuVzVa9GczoVdG1mWfVGc5RHLwIzX39GZhh2csATMflHLwEzX4xSZz91ZsAzMfRHLGZkRGZkRfJ3bs92YskmNhVTYykVNQJVMRhXVEF1X0hXZ0xiNx8VZ6l2cssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZwpmLyMDM3YzM3QzM1kDM1ITNzYzX1AjN1UTMxIzLcBTMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.jpg)
一、问题来源
seafile
版本:7.0.5
原因:
- 原文件
,字体没有嵌入,所以需要本系统的字体渲染pdf
-
使用seafile
,而把对应pdf.min.js
集成了。map
解决这个问题,关键点在
seafile
的
pdf.js
二、解决
用
seafile
预览“有问题的”
pdf
,且在浏览器里打开开发控制台
会发现,缺少对应
map
文件,如图:
解决步骤:
- 创建目录
,将/media/js/pdf/web/cmaps/
,Adobe-GB1-UCS2.bcmap
这两个文件放在这个目录下面UniGB-UCS2-H.bcmap
文件可以在 github 里下载:https://github.com/mozilla/pdf.js/blob/master/external/bcmaps/UniGB-UCS2-H.bcmap
$ root@3e1c6f87e1aa:/opt/seafile/seafile-server-latest/seahub/media/js/pdf/web/cmaps# ls
-
更改映射位置
编辑
文件viewer.js
$ root@3e1c6f87e1aa:/opt/seafile/seafile-server-latest/seahub/media/js/pdf# vi viewer.js
更改如下:
cMapUrl: {
// value: '../web/cmaps/',
value: '/media/js/pdf/web/cmaps/',
kind: OptionKind.API
}
- 重启服务
再次从
seafile
打开“有问题的”
pdf
,显示正常。
若还是未成功,可能是因为缓存:
再次打开可能会因为缓存,显示的
pdf
不全,这时候需要将缓存关闭。
三、题外话
相关问题,调研了其他几家的处理方式,列举如下:
- 钉钉
预览,是图片PDF
-
预览WPS
,可以奏效,但字体貌似有些不同PDF
-
,预览kkfilepreview
也是走PDF
pdf.js
尝试了下,没有补全
kkfilepreview
。
PDF