天天看點

【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​

​。