利用Python將圖片轉pdf
簡述,一般有這個需求的都是論文黨。因此,這篇文章主要是面對這樣的用戶的。
需要一些配置。
安裝fitz
在cmd上輸入:
pip install fitz lxml==4.3 networkx==2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/
如果還沒有安裝好,就再輸入一次:
pip install fitz -i https://pypi.tuna.tsinghua.edu.cn/simple/
熟悉的哥們就會發現有些lxml和networkx上給了特定的版本,因爲我安裝的時候遇到了這樣的問題。如果你這樣安裝失敗,可以後臺聯系我。
這樣就安裝好了,接下來就可以了。
代碼
import fitz
import os
import glob
def png2pdf(path='.'):
for name in glob.glob(os.path.join(path, '*.png')):
imgdoc = fitz.open(name)
pdfbytes = imgdoc.convertToPDF() # 使用圖片創建單頁的 PDF
imgpdf = fitz.open("pdf", pdfbytes)
imgpdf.save(name[:-4] + '.pdf')
對,就是這個函數。函數的效果就是:
- 將path路徑下的所有的png轉成pdf
- 生成的pdf名字同png
- 不會刪掉原來的png
- 默認直接調用函數不給參數的話,就直接處理代碼所在的目錄(除非你玩了騷操作(一般沒有))
- 如果你要處理jpg,就把代碼中的png轉成jpg就好了嘛(其他圖片格式類似)
附錄
因爲是面對論文黨的,所以往往用python處理的結果plt處理圖片保存下來像素都比較粗糙。
因此,需要高清文件的話,可以這麼來。在生成圖片的時候,添加一個參數``dpi`就好了。下面的實例中給的dpi已經夠用了。具體如下:
plt.savefig('1.png', dpi=300)