最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決PDF 轉(zhuǎn)圖片時丟文字的一種可能方式

 更新時間:2021年03月04日 09:48:27   作者:secsilm  
這篇文章主要介紹了解決PDF 轉(zhuǎn)圖片時丟字的一種可能方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

問題

Python 中 PDF 轉(zhuǎn)圖片一般用的是 pdf2image。有時我們會發(fā)現(xiàn) PDF 轉(zhuǎn)出來的圖片都是空白,或者缺失了一些字,具體表現(xiàn)就是一些應(yīng)該有字的區(qū)域是空白。

由于某些原因我不能把出現(xiàn)問題的文件放上來,不過大致就是這個情況。

主要的代碼如下:

images = pdf2image.convert_from_path('/path/to/pdf', output_folder='images/', fmt='jpg')

運行時可能會發(fā)現(xiàn)代碼沒有任何異常,但是結(jié)果不對。

分析和解決

其實 pdf2image 底層默認使用的是 pdftoppm 來轉(zhuǎn)圖片,我們可以直接使用其來測試有問題的 PDF,會發(fā)現(xiàn)輸出了一些警告:

除 pdftoppm 外,pdf2image 在兩種情況下會使用 pdftocairo 來轉(zhuǎn)圖片,具體是:

當要轉(zhuǎn)成 tif/tiff 格式時

當 transparent=True(默認為 False)且要轉(zhuǎn)成 png/tif/tiff

Missing language pack for 'Adobe-GB1' mapping

很明顯是缺失了語言包。

而且字缺失,自然而然想到的是字體缺失,即系統(tǒng)中沒有 PDF 中的字體。

我們需要找到對應(yīng)的字體,然后安裝上。

一般來說,Linux 系統(tǒng)中,直接復(fù)制相應(yīng)的字體文件到 /usr/share/fonts/ 目錄下即可,可以使用 fc-list :lang=zh-cn 來查看當前系統(tǒng)有哪些中文字體。

對于中文來說,Noto CJK 字體可以覆蓋所有的字,可以嘗試下載安裝此字體,有些系統(tǒng)可能自帶。

有了字體,你再試的時候可能會發(fā)現(xiàn)還是不行,因為你還需要另一個東西:poppler-data。

這個東西是干嘛用的?根據(jù)作者的描述:

This package consists of encoding files for use with poppler. The encoding files are optional and poppler will automatically read them if they are present. When installed, the encoding files enables poppler to correctly render CJK and Cyrrilic properly. While poppler is licensed under the GPL, these encoding files have different license, and thus distributed separately.

大致就是這個包里是一些編碼文件,可以讓 poppler 正確渲染 CJK 文字。

我們可以通過 apt 來安裝:

sudo apt install poppler-data

然后再次嘗試,應(yīng)該就可以成功轉(zhuǎn)成正常的圖片了。

總結(jié)一下,你需要兩個東西:

正確的字體文件

poppler-data

Reference

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

最新評論

文成县| 军事| 三明市| 岢岚县| 大理市| 东乡县| 沧州市| 阳朔县| 邮箱| 汕尾市| 庆安县| 南木林县| 蕉岭县| 通化县| 岳阳市| 怀柔区| 石城县| 梁平县| 丰台区| 英超| 噶尔县| 赞皇县| 台南市| 南城县| 东乡县| 论坛| 天镇县| 晋江市| 同德县| 乾安县| 威信县| 拉孜县| 宣化县| 珠海市| 曲阜市| 民县| 广饶县| 仪征市| 奉化市| 南部县| 垦利县|