python是非常好用的一門語言,因為它有很多別人封裝好底層邏輯的庫,我們只需要用簡單的函式呼叫或者經過并不復雜的初始化程序即可,最近要投遞簡歷,所以在處理簡歷的時候遇到一個問題,就是生成了一份pdf簡歷,但有一頁是多余的,一開始是用wps進行洗掉的,不過只進行洗掉然后保存一項操作,就要充錢了!!!吃相真難看!我是程式員,我還用你的邏輯嗎?呸
截圖轉換成pdf
初始想法,是用截圖的辦法,來生成一張圖片,然后使用pillow來進行處理(也就呼叫save函式,規定一下保存引數而已),如下:

就一張截圖,然后簡單處理就可以了,需要說明的是下面用到的第三方庫是pillow庫:
from PIL import Image
def main():
path = "resume.png"
img = Image.open(path)
img.load()
background = Image.new('RGB', img.size, (255, 255, 255))
background.paste(img, mask=img.split()[3]) # 3 is the alpha channel
background.save('res.pdf', save_all=True)
img.close()
if __name__ == '__main__':
main()
其實個人處理,直接用python的互動界面就行了的,簡單快捷,不過最后得到的效果不好,因為照片轉過來后,默認的轉換得到的pdf很模糊,
第二彈
上面失敗后,就想著從之前已經下載好的pdf入手,因為有兩頁,所以想切換成圖片物件,然后把圖片物件保存為pdf,
用到的庫是pymupdf和上面的pillow,
import fitz #pymupdf庫
from PIL import Image
def main():
# 保存第二頁pdf為圖片
doc = fitz.open('balala.pdf')
trans = fitz.Matrix(1.0, 1.0).prerotate(0) #Matrix的引數是表示解析度
pix = doc[1].get_pixmap(matrix=trans, alpha=False)
dpi = (pix.xres, pix.yres)
img = Image.frombytes('RGB', (pix.width, pix.height), pix.samples)
img.save('res.jpg', dpi=dpi)
img.close()
# 轉換得到的圖片為pdf
img_pdf = Image.open('res.jpg')
img_pdf.save('res.pdf', save_all=True)
img_pdf.close()
if __name__ == "__main__":
main()
嗯,滿心歡喜打開一看,,,,,,媽哎,這都啥?比上面的還要模糊,生成的圖片和pdf都是目標內容,但清晰度不夠,沒法子了,不搞轉換那一套了,直接處理pdf!!!
pdf處理PyPDF2
如題所示,這里要用到的是PyPDF2這么一個庫,不浪費時間,直接上代碼:
# encoding=utf-8
# 主要用到的就庫里面的讀取物件和寫入物件
from PyPDF2 import PdfFileReader, PdfFileWriter
def main():
pdf = PdfFileReader(open('test.pdf', 'rb'))
pdf_res = PdfFileWriter()
pdf_res.addPage(pdf.getPage(1)) #第二頁,所以index是1
pdf_res.write(open('res.pdf', 'wb'))
if __name__ == "__main__":
main()
嗯,這次總算是ok了,如果是互動界面進行的話,記得最后關掉cmd的python行程再查看結果pdf,不然會顯示檔案損壞,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/539305.html
標籤:Python
上一篇:python爬蟲爬取網易云音樂(超詳細教程,附原始碼)
下一篇:python基礎-例外處理
