<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】用于在 Python 中處理 PDF 文件的 PyPDF2 庫

          共 4423字,需瀏覽 9分鐘

           ·

          2021-10-30 00:33

          作者?| megha152

          編譯 | Flin

          來源 | analyticsvidhya

          介紹

          PDF 代表便攜式文檔格式。它使用 .pdf 擴(kuò)展名。這種類型的文件主要用于共享目的。它們不能被修改,從而完整地保留了文件的格式。

          因此,它們可以輕松共享和下載。它們用于閱讀而不是編輯。它們?cè)讵?dú)立于硬件、軟件和操作系統(tǒng)打開的任何設(shè)備上看起來都相似。因此,它們是最廣泛使用的格式。它是由Adobe發(fā)明的。現(xiàn)在是國際標(biāo)準(zhǔn)化組織 (ISO)的開放標(biāo)準(zhǔn)。

          在本教程中,我們將學(xué)習(xí)如何在 Python 中處理 PDF 文件。將涵蓋以下主題:

          • 如何從 PDF 文件中提取文本。

          • 如何旋轉(zhuǎn) PDF 文件的頁面。

          • 如何從 PDF 文件中提取文檔信息。

          • 如何從 PDF 文件中拆分頁面。

          • 如何合并 PDF 文件的頁面。

          • 如何加密PDF文件。

          • 如何為 PDF 文件添加水印。

          Python 中 PDF 的一些常用庫

          有許多庫可免費(fèi)用于處理 PDF:

          1. PDFMiner:它是一個(gè)用于從PDF中提取文本的開源工具。它用于對(duì)數(shù)據(jù)進(jìn)行分析。它也可以用作 PDF 轉(zhuǎn)換器或 PDF 解析器。

          2. PDFQuery:它是一個(gè)圍繞 PDFMiner、Ixml 和 PyQuery 的輕量級(jí) Python 包裝器。它是一個(gè)快速、用戶友好的 PDF 抓取庫。

          3. Tabula.py:它是tabula.java的 Python 包裝器。它將 PDF 文件轉(zhuǎn)換為 Pandas 的數(shù)據(jù)框,并且所有數(shù)據(jù)操作都可以在數(shù)據(jù)框上執(zhí)行。

          4. Xpdf : 它允許將 PDF 轉(zhuǎn)換為文本。

          5. pdflib:它是 poppler 庫的擴(kuò)展,其中包含 python 綁定。

          6. Slate:它是一個(gè)基于PDFMiner 的Python 包,用于從PDF 中提取文本。

          7. PyPDF2:它是一個(gè) Python 庫,用于對(duì) PDF 文件執(zhí)行主要任務(wù),例如提取文檔特定信息、合并 PDF 文件、拆分 PDF 文件的頁面、為文件添加水印、加密和解密 PDF文件等。

            我們將在本教程中使用 PyPDF2 庫。它是一個(gè)純 python 庫,因此它可以在任何平臺(tái)上運(yùn)行,而無需對(duì)任何外部庫產(chǎn)生任何與平臺(tái)相關(guān)的依賴。

          安裝 PyPDF2 庫

          要安裝 PyPDF2,請(qǐng)?jiān)诿钐崾痉袕?fù)制以下命令并運(yùn)行:

          pip?install?PyPDF2

          獲取文檔詳細(xì)信息

          PyPDF2 提供有關(guān) PDF 文檔的元數(shù)據(jù)。這可能是有關(guān) PDF 文件的有用信息。可以直接獲得文檔作者、標(biāo)題、制作人、主題等信息。

          ![](http://qiniu.aihubs.net/45251Untitled (9).jpg)

          要提取上述信息,請(qǐng)運(yùn)行以下代碼:

          from?PyPDF2?import?PdfFileReader
          pdf_path=r"C:UsersDellDesktopTesting?Tesseractexample.pdf"
          with?open(pdf_path,?'rb')?as?f:
          ????????pdf?=?PdfFileReader(f)
          ????????information?=?pdf.getDocumentInfo()
          ????????number_of_pages?=?pdf.getNumPages()
          ????????print(information)

          上述代碼的輸出如下:

          讓我們格式化輸出:

          print("Author"?+':?'?+?information.author)
          print("Creator"?+':?'?+?information.creator)
          print("Producer"?+':?'?+?information.producer)

          從 PDF 中提取文本

          為了提取文本,我們將讀取文件并創(chuàng)建文件的 PDF 對(duì)象。

          #?creating?a?pdf?file?object
          pdfFileObject?=?open(pdf_path,?'rb')

          然后我們將創(chuàng)建一個(gè) PDFReader 類對(duì)象并將 PDF 文件對(duì)象傳遞給它。

          # 創(chuàng)建一個(gè)pdf閱讀器對(duì)象

          pdfReader?=?PyPDF2.PdfFileReader(pdfFileObject)

          最后,我們將提取每個(gè)頁面并連接每個(gè)頁面的文本。

          text=''
          for?i?in?range(0,pdfReader.numPages):
          ????#?creating?a?page?object
          ????pageObj?=?pdfReader.getPage(i)
          ????#?extracting?text?from?page
          ????text=text+pageObj.extractText()
          print(text)

          輸出文本如下:

          旋轉(zhuǎn) PDF 的頁面

          要旋轉(zhuǎn) PDF 文件的頁面并將其另存為另一個(gè)文件,請(qǐng)復(fù)制以下代碼并運(yùn)行它。

          pdf_read?=?PdfFileReader(r"C:UsersDellDesktopstory.pdf")
          pdf_write?=?PdfFileWriter()
          #?Rotate?page?90?degrees?to?the?right
          page1?=?pdf_read.getPage(0).rotateClockwise(90)
          pdf_write.addPage(page1)
          with?open(r'C:UsersDellDesktoprotate_pages.pdf',?'wb')?as?fh:
          ????pdf_write.write(fh)

          在 Python 中合并 PDF 文件

          我們還可以使用以下命令合并兩個(gè)或多個(gè) PDF 文件:

          pdf_read = PdfFileReader(r”C:UsersDellDesktopstory.pdf”)

          pdf_write?=?PdfFileWriter()
          #?Rotate?page?90?degrees?to?the?right
          page1?=?pdf_read.getPage(0).rotateClockwise(90)
          pdf_write.addPage(page1)
          with?open(r'C:UsersDellDesktoprotate_pages.pdf',?'wb')?as?fh:
          ????pdf_write.write(fh)

          輸出PDF如下所示:

          拆分PDF頁面

          我們可以將 PDF 拆分為單獨(dú)的頁面,然后將它們?cè)俅伪4鏋?PDF。

          fname?=?os.path.splitext(os.path.basename(pdf_path))[0]
          ????for?page?in?range(pdf.getNumPages()):
          ????????pdfwrite?=?PdfFileWriter()
          ????????pdfwrite.addPage(pdf.getPage(page))
          ????????outputfilename?=?'{}_page_{}.pdf'.format(
          ????????????fname,?page+1)
          ????????with?open(outputfilename,?'wb')?as?out:
          ????????????pdfwrite.write(out)
          ????????print('Created:?{}'.format(outputfilename))
          pdf?=?PdfFileReader(pdf_path)

          加密 PDF 文件

          加密 PDF 文件意味著向文件添加密碼。每次打開文件時(shí),它都會(huì)提示輸入文件的密碼。它允許對(duì)內(nèi)容進(jìn)行密碼保護(hù)。出現(xiàn)以下彈出窗口:

          我們可以使用以下代碼:

          for?page?in?range(pdf.getNumPages()):
          ????????pdfwrite.addPage(pdf.getPage(page))
          ????pdfwrite.encrypt(user_pwd=password,?owner_pwd=None,
          ??????????????????????use_128bit=True)
          ????with?open(outputpdf,?'wb')?as?fh:
          ????????pdfwrite.write(fh)

          為 PDF 文件添加水印

          水印是出現(xiàn)在每一頁上的識(shí)別圖像或圖案。它可以是公司徽標(biāo)或任何要反映在每個(gè)頁面上的重要信息。

          要為 PDF 的每一頁添加水印,請(qǐng)復(fù)制以下代碼并運(yùn)行。

          originalfile?=?r"C:UsersDellDesktopTesting?Tesseractexample.pdf"
          watermark?=?r"C:UsersDellDesktopTesting?Tesseractwatermark.pdf"
          watermarkedfile?=?r"C:UsersDellDesktopTesting?Tesseractwatermarkedfile.pdf"
          watermark?=?PdfFileReader(watermark)
          watermarkpage?=?watermark.getPage(0)
          pdf?=?PdfFileReader(originalfile)
          pdfwrite?=?PdfFileWriter()
          for?page?in?range(pdf.getNumPages()):
          ????pdfpage?=?pdf.getPage(page)
          ????pdfpage.mergePage(watermarkpage)
          ????pdfwrite.addPage(pdfpage)
          with?open(watermarkedfile,?'wb')?as?fh:
          ????pdfwrite.write(fh)

          上面的代碼讀取兩個(gè)文件——輸入文件和水印。然后在閱讀每一頁后,它將水印附加到每一頁并將新文件保存在同一位置。

          尾注

          正如我們?cè)谏厦婵吹降模锌梢栽?PDF 文件中想到的操作都可以使用 PyPDF2 庫在 Python 中輕松執(zhí)行。它純粹是用 Python 編寫的。因此它是完全獨(dú)立于平臺(tái)的。它易于使用并提供了極大的靈活性。

          圖片來源

          1. 圖 1:https://monkeypen.com/pages/free-childrens-books

          往期精彩回顧




          站qq群554839127,加入微信群請(qǐng)掃碼:
          瀏覽 1807
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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 高清在线 | 欧美黄色影片在线观看 | 久久久三级电影片 |