<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python 操作 PDF,這兩個庫必須會!

          共 4480字,需瀏覽 9分鐘

           ·

          2021-02-03 03:53

          Python在自動化辦公方面有很多實用的第三方庫,可以很方便的處理word、excel、ppt、pdf文件

          今天我們就學習一下Python處理PDF文檔的兩個常用庫「pdfplumber」「pypdf2」

          pdfplumber庫按頁處理 pdf ,獲取頁面文字,提取表格等操作

          文檔:https://github.com/jsvine/pdfplumber

          PyPDF2 是一個純 Python PDF 庫,可以讀取文檔信息(標題,作者等)、寫入、分割、合并PDF文檔,它還可以對pdf文檔進行添加水印、加密解密等

          文檔:https://pythonhosted.org/PyPDF2

          安裝:

          pip install pypdf2

          pip install pdfplumber

          pdfplumber

          提取PDF文字

          「提取單頁pdf文字」

          #?提取pdf文字
          import?pdfplumber
          with?pdfplumber.open("D:\\pdffiles\\Python編碼規(guī)范中文版.pdf")?as?pdf:
          ????page01?=?pdf.pages[0]?#指定頁碼
          ????text?=?page01.extract_text()#提取文本
          ????print(text)

          「提取所有頁pdf文字」

          import?pdfplumber
          with?pdfplumber.open("D:\\pdffiles\\Python編碼規(guī)范中文版.pdf")?as?pdf:
          ????for?page?in?pdf.pages:
          ????????text?=?page.extract_text()#提取文本
          ????????print(text)

          「提取所有pdf文字并寫入文本中」

          import?pdfplumber
          with?pdfplumber.open("D:\\pdffiles\\Python編碼規(guī)范中文版.pdf")?as?pdf:
          ????for?page?in?pdf.pages:
          ????????text?=?page.extract_text()#提取文本
          ????????txt_file?=?open("D:\\pdffiles\\Python編碼規(guī)范中文版.txt",mode='a',encoding='utf-8')
          ????????txt_file.write(text)

          提取PDF表格

          「提取表格」

          #?提取pdf表格
          import?pdfplumber
          with?pdfplumber.open("D:\\pdffiles\\人力資源部崗位編制.pdf")?as?pdf:
          ????page01?=?pdf.pages[0]?#指定頁碼
          ????table1?=?page01.extract_table()#提取單個表格
          ????#?table2?=?page01.extract_tables()#提取多個表格
          ????print(table1)



          「提取表格,保存為excel文件」

          import?pdfplumber
          from?openpyxl?import?Workbook?#保存表格,需要安裝openpyxl
          with?pdfplumber.open("D:\\pdffiles\\人力資源部崗位編制.pdf")?as?pdf:
          ????page01?=?pdf.pages[0]
          ????table?=?page01.extract_table()
          ????workbook?=?Workbook()
          ????sheet?=?workbook.active
          ????for?row?in?table:
          ????????sheet.append(row)
          ????workbook.save(filename="D:\\pdffiles\\人力資源部崗位編制.xlsx")

          PyPDF2

          PyPDF2 中有兩個最常用的類:PdfFileReaderPdfFileWriter,分別用于讀取 PDF 和寫入 PDF。其中PdfFileReader傳入?yún)?shù)可以是一個打開的文件對象,也可以是表示文件路徑的字符串。而PdfFileWriter則必須傳入一個以寫方式打開的文件對象。

          「PdfFileReader 對象的屬性和方法」

          「PdfFileWriter 對象的屬性和方法」

          分割PDF

          from?PyPDF2?import??PdfFileReader,?PdfFileWriter
          file_reader?=?PdfFileReader("D:\\pdffiles\\Python編碼規(guī)范中文版.pdf")
          #?getNumPages()?獲取總頁數(shù)
          for?page?in?range(file_reader.getNumPages()):
          ????#?實例化對象
          ????file_writer?=?PdfFileWriter()
          ????#?將遍歷的每一頁添加到實例化對象中
          ????file_writer.addPage(file_reader.getPage(page))
          ????with?open("D:\\pdffiles\\{}.pdf".format(page),'wb')?as?out:
          ????????file_writer.write(out)

          合并PDF

          將上述分割的pdf合并成一個文件

          「示例代碼」

          from?PyPDF2?import??PdfFileReader,?PdfFileWriter
          file_writer?=?PdfFileWriter()
          for?page?in?range(34):
          ????#?循環(huán)讀取需要合并pdf文件
          ????file_reader?=?PdfFileReader("D:\\pdffiles\\{}.pdf".format(page))
          ????#?遍歷每個pdf的每一頁
          ????for?page?in?range(file_reader.getNumPages()):
          ????????#?寫入實例化對象中
          ????????file_writer.addPage(file_reader.getPage(page))

          with?open("D:\\pdffiles\\合并.pdf",'wb')?as?out:
          ????file_writer.write(out)

          PDF旋轉(zhuǎn)

          #?旋轉(zhuǎn)pdf,只能按照90度的倍數(shù)旋轉(zhuǎn)
          from?PyPDF2?import??PdfFileReader,?PdfFileWriter
          file_reader?=?PdfFileReader("D:\\pdffiles\\Python編碼規(guī)范中文版.pdf")
          file_writer?=?PdfFileWriter()
          page?=?file_reader.getPage(0).rotateClockwise(90)?#?第1頁順時針旋轉(zhuǎn)90度
          file_writer.addPage(page)?#?寫入
          page?=?file_reader.getPage(1).rotateCounterClockwise(90)?#?第2頁逆時針旋轉(zhuǎn)90度
          file_writer.addPage(page)?#?寫入
          with?open("D:\\pdffiles\\旋轉(zhuǎn).pdf",'wb')?as?out:
          ????file_writer.write(out)

          PDF加密解密

          「添加密碼」

          from?PyPDF2?import??PdfFileReader,?PdfFileWriter
          file_reader?=?PdfFileReader("D:\\pdffiles\\Python編碼規(guī)范中文版.pdf")
          file_writer?=?PdfFileWriter()
          for?page?in?range(file_reader.getNumPages()):
          ????file_writer.addPage(file_reader.getPage(page))

          file_writer.encrypt('123456')?#?設(shè)置密碼
          with?open("D:\\pdffiles\\加密后.pdf",'wb')?as?out:
          ????file_writer.write(out)

          打開文件,提示輸入密碼

          「解除密碼」

          from?PyPDF2?import??PdfFileReader,?PdfFileWriter
          file_reader?=?PdfFileReader("D:\\pdffiles\\加密后.pdf")
          file_reader.decrypt('123456')
          file_writer?=?PdfFileWriter()
          for?page?in?range(file_reader.getNumPages()):
          ????file_writer.addPage(file_reader.getPage(page))

          with?open("D:\\pdffiles\\解密后.pdf",'wb')?as?out:
          ????file_writer.write(out)

          PDF添加水印

          首先準備一個水印文檔,可以用空白word添加圖片或者文字轉(zhuǎn)成pdf文件。

          「示例代碼」

          #?添加水印
          from?PyPDF2?import??PdfFileReader,?PdfFileWriter
          from?copy?import?copy
          sy?=?PdfFileReader("D:\\pdffiles\\水印.pdf")
          mark_page?=?sy.getPage(0)?#?水印所在的頁數(shù)
          #?讀取添加水印的文件
          file_reader?=?PdfFileReader("D:\\pdffiles\\Python編碼規(guī)范中文版.pdf")
          file_writer?=?PdfFileWriter()

          for?page?in?range(file_reader.getNumPages()):
          ????#?讀取需要添加水印每一頁pdf
          ????source_page?=?file_reader.getPage(page)
          ????new_page?=?copy(mark_page)?#
          ????new_page.mergePage(source_page)?#?new_page(水印)在下面,source_page原文在上面
          ????file_writer.addPage(new_page)

          with?open("D:\\pdffiles\\添加水印后.pdf",'wb')?as?out:
          ????file_writer.write(out)

          添加水印后的文檔:



          ??分享、點贊、在看,給個三連擊唄!
          瀏覽 98
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  五月丁香日本在线 | 波多野结衣AV一区二区 | 91亚洲精品国产成人 | 色婷婷国产精品高潮呻吟AV久久 | 久久午夜福利电影 |