<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

          共 6213字,需瀏覽 13分鐘

           ·

          2022-03-23 10:40

          點擊上方小白學視覺”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達




          作者介紹:

          大家可以叫我黃同學(博客名:Huang Supreme),一個應用統(tǒng)計碩士,愛好寫一些技術(shù)博客,志在用通俗易懂的寫作風格,幫助大家學到知識,學好知識!


          【作者導語】本文是鑒于有些粉絲的工作需求,有時候需要遇到這些文件的處理。因此,我寫了一個文章集合,供大家參考。全篇包括三個章節(jié),分別為:Python使用openpyxl操作excelpython使用PyPDF2和pdfplumber操作pdfpython使用python-docx操作word。本篇為第二章節(jié)。



          全文已整理為pdf,可按文末指引獲取。



          本章目錄


          章節(jié)二

          ? python使用PyPDF2和pdfplumber操作pdf?????

          ???

          1、PyPDF2和pdfplumber庫介紹 ????


          2、python提取PDF文字內(nèi)容 ???????

          ? ?1)利用pdfplumber提取文字 ???????

          ? ?2)利用pdfplumber提取表格并寫入excel ????


          3、PDF合并及頁面的排序和旋轉(zhuǎn) ???????

          ? ?1)分割及合并pdf ?????????

          ? ? ? ?① 合并pdf ?????????

          ? ? ? ??② 拆分pdf ???????

          ? ?2)旋轉(zhuǎn)及排序pdf ?????????

          ? ? ? ?① 旋轉(zhuǎn)pdf ?????????

          ? ? ? ? ② 排序pdf ????


          4、pdf批量加水印及加密、解密 ???????

          ? ?1)批量加水印 ???????

          ? ?2)批量加密、解密 ?????????

          ? ? ? ?① 加密pdf ?????????

          ? ? ? ? ② 解密pdf并保存為未加密的pdf?

          上下滾動查看更多


          章節(jié)二:python使用PyPDF2和pdfplumber操作pdf


          1、PyPDF2和pdfplumber庫介紹

          • PyPDF2官網(wǎng):PyPDF2官網(wǎng)?(https://pythonhosted.org/PyPDF2/),可以更好的讀取、寫入、分割、合并PDF文件;
          • pdfplumber官網(wǎng):pdfplumber官網(wǎng)(https://github.com/jsvine/pdfplumber),可以更好地讀取PDF文件內(nèi)容和提取PDF中的表格;
          • 這兩個庫不屬于python標準庫,都需要單獨安裝;

          2、python提取PDF文字內(nèi)容

          1)利用pdfplumber提取文字
          import?PyPDF2
          import?pdfplumber

          with?pdfplumber.open("餐飲企業(yè)綜合分析.pdf")?as?p:
          ????page?=?p.pages[2]
          ????print(page.extract_text())

          結(jié)果如下:

          2)利用pdfplumber提取表格并寫入excel
          • extract_table():如果一頁有一個表格;
          • extract_tables():如果一頁有多個表格;
          import?PyPDF2
          import?pdfplumber
          from?openpyxl?import?Workbook

          with?pdfplumber.open("餐飲企業(yè)綜合分析.pdf")?as?p:
          ????page?=?p.pages[4]
          ????table?=?page.extract_table()
          ????print(table)
          ????
          ????workbook?=?Workbook()
          ????sheet?=?workbook.active
          ????for?row?in?table:
          ????????if?not?"".join()?==?""
          ????????????sheet.append(row)
          ????workbook.save(filename?=?"新pdf.xlsx")

          結(jié)果如下:缺陷:可以看到,這里提取出來的表格有很多空行,怎么去掉這些空行呢?判斷:將列表中每個元素都連接成一個字符串,如果還是一個空字符串那么肯定就是空行。

          import?PyPDF2
          import?pdfplumber
          from?openpyxl?import?Workbook

          with?pdfplumber.open("餐飲企業(yè)綜合分析.pdf")?as?p:
          ????page?=?p.pages[4]
          ????table?=?page.extract_table()
          ????print(table)
          ????
          ????workbook?=?Workbook()
          ????sheet?=?workbook.active
          ????for?row?in?table:
          ????????if?not?"".join([str(i)?for?i?in?row])?==?"":
          ????????????sheet.append(row)
          ????workbook.save(filename?=?"新pdf.xlsx")

          結(jié)果如下:

          3、PDF合并及頁面的排序和旋轉(zhuǎn)

          1)分割及合并pdf
          ① 合并pdf

          首先,我們有如下幾個文件,可以發(fā)現(xiàn)這里共有三個PDF文件需要我們合并。同時可以發(fā)現(xiàn)他們的文件名都是有規(guī)律的(如果文件名,沒有先后順序,我們合并起來就沒有意義了。)代碼如下:

          from?PyPDF2?import?PdfFileReader,?PdfFileWriter

          pdf_writer?=?PdfFileWriter()
          for?i?in?range(1,len(os.listdir(r"G:\6Tipdm\7python辦公自動化\concat_pdf"))+1):
          ????print(i*50+1,(i+1)*50)
          ????pdf_reader?=?PdfFileReader("G:\\6Tipdm\\7python辦公自動化\\concat_pdf\{}-{}.pdf".format(i*50+1,(i+1)*50))
          ????for?page?in?range(pdf_reader.getNumPages()):
          ????????pdf_writer.addPage(pdf_reader.getPage(page))
          ????????
          with?open("G:\\6Tipdm\\7python辦公自動化\\concat_pdf\merge.pdf",?"wb")?as?out:
          ????pdf_writer.write(out)

          結(jié)果如下:

          ② 拆分pdf

          這里有一個“時間序列.pdf”的文件,共3頁,我們將其每一頁存為一個PDF文件。代碼如下:

          from?PyPDF2?import?PdfFileReader,?PdfFileWriter

          pdf_reader?=?PdfFileReader(r"G:\6Tipdm\7python辦公自動化\concat_pdf\時間序列.pdf")
          for?page?in?range(pdf_reader.getNumPages()):
          ????pdf_writer?=?PdfFileWriter()
          ????pdf_writer.addPage(pdf_reader.getPage(page))
          ????with?open(f"G:\\6Tipdm\\7python辦公自動化\\concat_pdf\\{page}.pdf",?"wb")?as?out:
          ????????pdf_writer.write(out)

          結(jié)果如下:

          2)旋轉(zhuǎn)及排序pdf
          ① 旋轉(zhuǎn)pdf
          • .rotateClockwise(90的倍數(shù)):順時針旋轉(zhuǎn)90度
          • .rotateCounterClockwise(90的倍數(shù)):逆時針旋轉(zhuǎn)90度
          from?PyPDF2?import?PdfFileReader,?PdfFileWriter

          pdf_reader?=?PdfFileReader(r"G:\6Tipdm\7python辦公自動化\concat_pdf\時間序列.pdf")
          pdf_writer?=?PdfFileWriter()
          for?page?in?range(pdf_reader.getNumPages()):
          ????if?page?%?2?==?0:
          ????????rotation_page?=?pdf_reader.getPage(page).rotateCounterClockwise(90)
          ????else:
          ????????rotation_page?=?pdf_reader.getPage(page).rotateClockwise(90)
          ????pdf_writer.addPage(rotation_page)
          ????with?open("G:\\6Tipdm\\7python辦公自動化\\concat_pdf\\旋轉(zhuǎn).pdf",?"wb")?as?out:
          ????????pdf_writer.write(out)
          """
          上述代碼中,我們循環(huán)遍歷了這個pdf,對于偶數(shù)頁我們逆時針旋轉(zhuǎn)90°,對于奇數(shù)頁我們順時針旋轉(zhuǎn)90°;
          注意:旋轉(zhuǎn)的角度只能是90的倍數(shù);
          """

          其中一頁效果展示如下:

          ② 排序pdf

          需求:我們有一個PDF文件,我們需要倒序排列,應該怎么做呢?首先,我們來看python中,怎么倒敘打印一串數(shù)字,如下圖所示。那么倒序排列一個pdf,思路同上,代碼如下:

          from?PyPDF2?import?PdfFileReader,?PdfFileWriter

          pdf_reader?=?PdfFileReader(r"G:\6Tipdm\7python辦公自動化\concat_pdf\時間序列.pdf")
          pdf_writer?=?PdfFileWriter()
          for?page?in?range(pdf_reader.getNumPages()-1,?-1,?-1):
          ????pdf_writer.addPage(pdf_reader.getPage(page))
          with?open("G:\\6Tipdm\\7python辦公自動化\\concat_pdf\\倒序.pdf",?"wb")?as?out:
          ????????pdf_writer.write(out)

          結(jié)果如下:

          4、pdf批量加水印及加密、解密

          1)批量加水印
          from?PyPDF2?import?PdfFileReader,?PdfFileWriter
          from?copy?import?copy

          water?=?PdfFileReader(r"G:\6Tipdm\7python辦公自動化\concat_pdf\水印.pdf")
          water_page?=?water.getPage(0)

          pdf_reader?=?PdfFileReader(r"G:\6Tipdm\7python辦公自動化\concat_pdf\aa.pdf")
          pdf_writer?=?PdfFileWriter()

          for?page?in?range(pdf_reader.getNumPages()):
          ????my_page?=?pdf_reader.getPage(page)
          ????new_page?=?copy(water_page)
          ????new_page.mergePage(my_page)
          ????pdf_writer.addPage(new_page)
          with?open("G:\\6Tipdm\\7python辦公自動化\\concat_pdf\\添加水印后的aa.pdf",?"wb")?as?out:
          ????????pdf_writer.write(out)??
          """
          這里有一點需要注意:進行pdf合并的時候,我們希望“水印”在下面,文字在上面,因此是“水印”.mergePage(“圖片頁”)
          """

          結(jié)果如下:

          2)批量加密、解密
          • 這里所說的“解密”,是在知道pdf的密碼下,去打開pdf,而不是暴力破解;
          ① 加密pdf
          from?PyPDF2?import?PdfFileReader,?PdfFileWriter

          pdf_reader?=?PdfFileReader(r"G:\6Tipdm\7python辦公自動化\concat_pdf\時間序列.pdf")
          pdf_writer?=?PdfFileWriter()
          for?page?in?range(pdf_reader.getNumPages()):
          ????pdf_writer.addPage(pdf_reader.getPage(page))
          #?添加密碼
          pdf_writer.encrypt("a123456")
          with?open("G:\\6Tipdm\\7python辦公自動化\\concat_pdf\\時間序列.pdf",?"wb")?as?out:
          ????????pdf_writer.write(out)??

          結(jié)果如下:

          ② 解密pdf并保存為未加密的pdf
          from?PyPDF2?import?PdfFileReader,?PdfFileWriter

          pdf_reader?=?PdfFileReader(r"G:\6Tipdm\7python辦公自動化\concat_pdf\時間序列.pdf")
          #?解密pdf
          pdf_reader.decrypt("a123456")
          pdf_writer?=?PdfFileWriter()
          for?page?in?range(pdf_reader.getNumPages()):
          ????pdf_writer.addPage(pdf_reader.getPage(page))
          with?open("G:\\6Tipdm\\7python辦公自動化\\concat_pdf\\未加密的時間序列.pdf",?"wb")?as?out:
          ????????pdf_writer.write(out)??

          結(jié)果如下:

          下載1:OpenCV-Contrib擴展模塊中文版教程
          在「小白學視覺」公眾號后臺回復:擴展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺實戰(zhàn)項目52講
          小白學視覺公眾號后臺回復:Python視覺實戰(zhàn)項目即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。

          下載3:OpenCV實戰(zhàn)項目20講
          小白學視覺公眾號后臺回復:OpenCV實戰(zhàn)項目20講即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 114
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  国产女人叫高视频 | 伊人老司机 | 大奶熟女性爱视频 | 青娱乐 超碰 | 加勒比色综合 |