【seafile】之 预览电子发票PDF显示不全问题

心不动则不痛 提交于 2020-04-13 19:43:26

【今日推荐】:为什么一到面试就懵逼!>>>

近期在处理网盘和在线文件相关问题,面对的事比较多且杂,记录下。

问题:seafile自身预览PDF文件,部分不显示

图片显示如下:

在这里插入图片描述


一、问题来源


seafile版本:7.0.5

原因:

  1. 原文件pdf,字体没有嵌入,所以需要本系统的字体渲染
  2. seafile 使用 pdf.min.js,而把对应map集成了。

解决这个问题,关键点在 seafilepdf.js



二、解决


seafile预览“有问题的”pdf,且在浏览器里打开开发控制台

会发现,缺少对应map文件,如图:
在这里插入图片描述

解决步骤:

  1. 创建目录/media/js/pdf/web/cmaps/,将Adobe-GB1-UCS2.bcmapUniGB-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
Adobe-GB1-UCS2.bcmap  UniGB-UCS2-H.bcmap
  1. 更改映射位置
    编辑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不全,这时候需要将缓存关闭。



三、题外话


相关问题,调研了其他几家的处理方式,列举如下:

  1. 钉钉 PDF预览,是图片
  2. WPS 预览PDF,可以奏效,但字体貌似有些不同
  3. kkfilepreview,预览PDF也是走 pdf.js

尝试了下,kkfilepreview没有补全PDF

PS:今天,升级到社区版 7.1.3,pdf也会显示不全,需要同样处理。

同样用onlyoffice预览,会出现乱码,这个貌似是 onlyoffice的 BUG,对应issue:https://github.com/ONLYOFFICE/DocumentServer/issues/838






发布了408 篇原创文章 · 获赞 285 · 访问量 46万+
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!