以下的程式是利用GPT修訂。
來源:看圖學Python+Excel辦公室自動化程式設計
因為在 PyPDF2 3.0.0 之後,PdfFileReader 已被移除,官方建議改用 PdfReader,因此修訂書中第16章的範例。
範例ch16-1.py:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | from PyPDF2 import PdfReader import os pdf_path = os.path.join(os.getcwd(), "PDF", "Python海龜繪圖.pdf") print(pdf_path) pdfReader = PdfReader(pdf_path) numberOfPages = len(pdfReader.pages) print("頁數:", numberOfPages) # 試圖取得 metadata(注意新版中有些文件可能沒有 metadata) info = pdfReader.metadata print("作者:", info.get('/Author')) print("標題:", info.get('/Title')) print("製作者:", info.get('/Producer')) |
範例ch16-1a.py
1 2 3 4 5 6 7 8 9 | from PyPDF2 import PdfReader import os pdf_path = os.path.join(os.getcwd(), "PDF", "Python海龜繪圖.pdf") pdfReader = PdfReader(pdf_path) for pageNo, page in enumerate(pdfReader.pages): text = page.extract_text() print(f"第 {pageNo+1} 頁內容:\n{text}\n") |
範例ch16-1b.py:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | from PyPDF2 import PdfReader, PdfWriter import os pdf_path = os.path.join(os.getcwd(), "PDF", "Python海龜繪圖.pdf") pdf_output = os.path.join(os.getcwd(), "PDF", "Python海龜繪圖2.pdf") pdfReader = PdfReader(pdf_path) pdfWriter = PdfWriter() # 旋轉第 1 頁 90 度 page1 = pdfReader.pages[0] page1.rotate(90) # 或 page1.rotate_clockwise(90) pdfWriter.add_page(page1) # 寫入新的 PDF 檔案 with open(pdf_output, "wb") as fp: pdfWriter.write(fp) |
範例ch16-1c.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | from PyPDF2 import PdfReader, PdfWriter import os pdf_path = os.path.join(os.getcwd(), "PDF", "Python海龜繪圖.pdf") pdfReader = PdfReader(pdf_path) fname = os.path.splitext(os.path.basename(pdf_path))[0] for pageNo, page in enumerate(pdfReader.pages): pdfWriter = PdfWriter() pdfWriter.add_page(page) outputfname = os.path.join("PDF", f"{fname}_p{pageNo + 1}.pdf") with open(outputfname, "wb") as fp: pdfWriter.write(fp) print("分割建立PDF檔:", outputfname) |
範例ch16-1d.py:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | from PyPDF2 import PdfReader, PdfWriter import os pdf_output = os.path.join(os.getcwd(), "PDF", "Python海龜繪圖3.pdf") # 讀取三個單頁 PDF pdfReader1 = PdfReader(os.path.join(os.getcwd(), "PDF", "Python海龜繪圖_p1.pdf")) pdfReader2 = PdfReader(os.path.join(os.getcwd(), "PDF", "Python海龜繪圖_p2.pdf")) pdfReader3 = PdfReader(os.path.join(os.getcwd(), "PDF", "Python海龜繪圖_p3.pdf")) # 建立新的 PDF 寫入器 pdfWriter = PdfWriter() # 加入各頁 pdfWriter.add_page(pdfReader1.pages[0]) pdfWriter.add_page(pdfReader2.pages[0]) pdfWriter.add_page(pdfReader3.pages[0]) # 寫入新檔案 with open(pdf_output, "wb") as fp: pdfWriter.write(fp) print("已合併為新 PDF:", pdf_output) |
範例ch16-1e.py:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | from PyPDF2 import PdfFileReader, PdfFileWriter import os pdf_path = os.getcwd()+"/PDF/Python海龜繪圖.pdf" watermark_path = os.getcwd()+"/PDF/Python海龜繪圖_浮水印.pdf" pdf_output = os.getcwd()+"/PDF/Python海龜繪圖4.pdf" watermarkReader = PdfFileReader(watermark_path) watermarkpage = watermarkReader.getPage(0) pdfReader = PdfFileReader(pdf_path) pdfWriter = PdfFileWriter() for pageNo in range(pdfReader.getNumPages()): page = pdfReader.getPage(pageNo) page.mergePage(watermarkpage) pdfWriter.addPage(page) with open(pdf_output, "wb") as fp: pdfWriter.write(fp) |
沒有留言:
張貼留言