天天看点

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

文章目录

  • ​​一、问题来源​​
  • ​​二、解决​​
  • ​​三、题外话​​

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

问题:​

​seafile​

​自身预览PDF文件,部分不显示

图片显示如下:

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

一、问题来源

​seafile​

​版本:7.0.5

原因:

  1. 原文件​

    ​pdf​

    ​,字体没有嵌入,所以需要本系统的字体渲染
  2. ​seafile​

    ​​ 使用​

    ​pdf.min.js​

    ​​,而把对应​

    ​map​

    ​集成了。

解决这个问题,关键点在 ​

​seafile​

​​ 的​

​pdf.js​

二、解决

用​

​seafile​

​​预览“有问题的”​

​pdf​

​,且在浏览器里打开开发控制台

会发现,缺少对应​

​map​

​文件,如图:

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

解决步骤:

  1. 创建目录​

    ​/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      
  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
  }      
  1. 重启服务

再次从​

​seafile​

​​打开“有问题的”​

​pdf​

​,显示正常。

若还是未成功,可能是因为缓存:

再次打开可能会因为缓存,显示的​

​pdf​

​不全,这时候需要将缓存关闭。

三、题外话

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

  1. 钉钉​

    ​PDF​

    ​预览,是图片
  2. ​WPS​

    ​​ 预览​

    ​PDF​

    ​,可以奏效,但字体貌似有些不同
  3. ​kkfilepreview​

    ​​,预览​

    ​PDF​

    ​​也是走​

    ​pdf.js​

尝试了下,​

​kkfilepreview​

​​没有补全​

​PDF​

​。