1. 程式人生 > >是程序員,就用python導出pdf

是程序員,就用python導出pdf

and sys com python接口 使用 出場 man 其他 true

技術分享圖片

這兩天一直在做課件,我個人一直不太喜歡PPT這個東西……能不用就不用,我個人特別崇尚極簡風。

誰讓我們是程序員呢,所以就愛上了Jupyter寫課件,講道理markdown也是個非常不錯的寫書格式啊。

安裝Jupyter其實非常簡單,你會python就應該會用jupyter,起碼簡單的 pip install jupyter, jupyter notebook 要會對伐~

好那接下來就是使用jupyter了,啟動jupyter後,使用瀏覽器訪問相應IP:Port就可以使用了。沒錯,jupyter就是這麽一個可以用網站來寫python的地方。

技術分享圖片

但是發講義給同學們看,ipynb格式的文件肯定不方便啊,別人還沒上課呢,哪知道那麽多?再者PDF傳閱起來也隨時隨地能打開啊。所以我就想轉換成PDF。

但是打開文件,點擊下載,發現出現了Error

技術分享圖片

技術分享圖片

然後照著這個Error,就去谷歌了,發現說的最多的就是要裝一個latex環境,mac下完整的安裝包要將近3個G!我就為了一個PDF還不需要這麽大一個包吧?所以尋思其他方法。

雖然jupyter對PDF支持的不是那麽的友善,但是對於html是非常棒的,只不過html是一個html嘛(這不是廢話)……不過我可以利用html轉換到pdf上啊。

後來了解到python有一個包叫 pdfkit,專門用來轉換pdf文件。那我現在只需要在mac上得到pdfkit的支持就好啦?所以接下來就是嘗試的過程了。

  1. 安裝pdfkit,pip install pdfkit

  2. 在這裏下載對應系統的安裝包 http://wkhtmltopdf.org/ ,這個只有48MB。

  3. 最後就是為什麽說python是「多膜優秀」的原因了!直接看代碼

‘‘‘
需要安裝pdfkit, pip install pdfkit
自行下載並安裝wkhtmltopdf-binary, http://wkhtmltopdf.org/
‘‘‘

import sys
import subprocess

import pdfkit

# 獲得ipynb文件
inputfile = sys.argv[1].replace(" ", "\ ")

# 截取ipynb前面的名字,並保留一份html臨時文件
# 這份文件會在轉換過程中需要
# 因為我是利用jupyter對於html的支持,使用pdfkit對html文件進行轉換
temp_html = inputfile[0:inputfile.rfind(‘.‘)]+‘.html‘


# 轉換ipynb文件為html
# 調用了ipython接口
command = ‘ipython nbconvert --to html ‘ + inputfile

# shell端執行command
subprocess.call(command, shell=True)
print(‘============success===========‘)

# 拼接一個pdf名字
output_file = inputfile[0:inputfile.rfind(‘.‘)]+‘.pdf‘


# 大殺器出場,pdfkit直接將html轉換成pdf
pdfkit.from_file(temp_html, output_file)

# 刪除html臨時文件
subprocess.call(‘rm ‘+temp_html, shell=True)

操作起來也很簡單:

技術分享圖片

至此,ipynb文件已成功轉換成pdf文件,並且顏色、格式全都保留!

關註公眾號「Python專欄」,後臺回復「zsxq06」,獲取本文全套源碼!

技術分享圖片

是程序員,就用python導出pdf