在日常作業中,PDF (Portable Document Format的簡稱,意為"可攜帶檔案格式") 是我們比較常用的電子檔案格式,PDF檔案以 PostScript 語言圖象模型為基礎,無論在哪種列印機上都可保證精確的顏色和準確的列印效果,
市面上的 PDF 工具,檔案閱讀基本是免費的,但是檔案編輯很多都是需要收費的,面對PDF檔案處理,是時候思考如何利用 Python 免費高效地處理任務了,想誘導我下載付費使用,是不可能的!今天我給大家分享一些免費高效的處理方法,徹底解放雙手!
原文鏈接:
付費?是不可能的!處理 PDF 只需幾行代碼,徹底解放雙手!
處理PDF的Python庫
處理PDF的庫比較多,有時也需要多種配合使用,今天我就介紹一下常用的庫:
-
1、PyPDF2:一個純 python PDF庫,能夠分割,合并,裁剪和轉換PDF檔案的頁面,它還可以向PDF檔案添加自定義資料,查看選項和密碼,它可以從PDF中檢索文本和元資料,以及將整個檔案合并在一起,
-
2、ReportLab:它能快速創建PDF 檔案,一款超好用的開源專案,用于創建復雜的、資料驅動的PDF檔案和自定義矢量圖形
-
3、PDFMiner:一個從PDF檔案中提取資訊的工具,與其他PDF相關工具不同,它完全專注于獲取和分析文本資料,
-
4、pdfplumber,它是一個可以處理pdf格式資訊的庫,可以查找關于每個文本字符、矩陣、和行的詳細資訊,也可以對表格進行提取并進行可視化除錯,
PDF 實操
1、選取指定頁
可以利用 Python 從眾多 PDF 頁中,選擇指定頁
from PyPDF2 import PdfFileWriter, PdfFileReader
input1 = PdfFileReader("Python資料分析.pdf")
writer = PdfFileWriter()
def choose_pdf(index):
pages = input1.getNumPages()
for page_num in range(pages):
if page_num+1 not in index:
continue
page = input1.getPage(page_num)
writer.addPage(page)
out_file = open('out.pdf', 'wb')
writer.write(out_file)
out_file.close()
choose_pdf([1,2,3,4,5,6])
2、選取指定頁
對于不需要的頁,我們可以利用 Python 一鍵洗掉
from PyPDF2 import PdfFileWriter, PdfFileReader
input1 = PdfFileReader("source.pdf")
writer = PdfFileWriter()
def delete_pdf(index):
pages = input1.getNumPages()
for page_num in range(pages):
if page_num+1 in index:
continue
page = input1.getPage(page_num)
writer.addPage(page)
out_file = open('delete_out.pdf', 'wb')
writer.write(out_file)
out_file.close()
delete_pdf([2,3,4])
3、合并PDF
對于多個PDF 檔案,我們可以利用 Python 一鍵合并
from PyPDF2 import PdfFileReader, PdfFileWriter
# 創建兩個pdf檔案對應的PdfFileReader物件
pdf_reader1 = PdfFileReader('source.pdf')
pdf_reader2 = PdfFileReader('delete_out.pdf')
# 創建PdfFileWriter物件
writer = PdfFileWriter()
# 遍歷將第一個pdf檔案中的每一頁取出來
for page_num in range(pdf_reader1.getNumPages()):
# 取出每一頁對應的PageObject物件
page = pdf_reader1.getPage(page_num)
# 將當前取出來的頁面添加到writer中
writer.addPage(page)
# 遍歷將第二個pdf檔案中的每一頁取出來
for page_num in range(pdf_reader2.getNumPages()):
# 取出每一頁對應的PageObject物件
page = pdf_reader2.getPage(page_num)
# 將當前取出來的頁面添加到writer中
writer.addPage(page)
# write(stream) - 將添加到此物件的頁面集合寫入 PDF 檔案 ,這兒的stream必須是以寫的方式打開的檔案物件
out_file = open('add_out.pdf', 'wb')
writer.write(out_file)
out_file.close()
4、添加水印
對于多個PDF 檔案,我們可以利用 Python 一鍵合并
def add_watermark2pdf(input_pdf,output_pdf,watermark_pdf):
watermark = PdfFileReader(watermark_pdf)
watermark_page = watermark.getPage(0)
pdf = PdfFileReader(input_pdf,strict=False)
pdf_writer = PdfFileWriter()
for page in range(pdf.getNumPages()):
pdf_page = pdf.getPage(page)
pdf_page.mergePage(watermark_page)
pdf_writer.addPage(pdf_page)
pdfOutputFile = open(output_pdf,'wb')
# pdf_writer.encrypt(user_pwd="1234",owner_pwd="01234")#設定pdf密碼
pdf_writer.write(pdfOutputFile)
pdfOutputFile.close()
create_watermark("""更多內容關注公眾號:Python學習與資料挖掘""")
input_pdf= 'source.pdf'
output_pdf= 'water_result.pdf'
watermark_pdf='water_mark.pdf'
add_watermark2pdf(input_pdf,output_pdf,watermark_pdf)
結果示例
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-useP2p1B-1599984008623)(https://imgkr2.cn-bj.ufileos.com/ca460ace-b3b9-4cd2-b31d-c78cffa02192.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=fCNUrEpBpPeE3sXysbvuvjcp2AQ%253D&Expires=1600069551)]
5、PDF加密
我們可以設定用戶和owner加密功能
pdf_writer.encrypt(user_pwd="12324",owner_pwd="021234")#設定pdf密碼
推薦閱讀
-
就是這么牛!三行Python代碼,讓資料處理速度提高2到6倍
-
方法論|這才是一個完整版的渠道落地頁資料分析案例!
-
Python辦公自動化|10個方法,是時候對Excel下手了
-
8個好用到爆炸的Jupyter Notebook小技巧!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/66689.html
標籤:其他
上一篇:求助,急,哪位excel大神可以幫忙,這個要怎么解決呢!需要將列行有資料項提取出來
下一篇:MATLAB種的函式“lidarSLAM”無法使用,內置這個函式的“navigation toolbox”也沒有,
