Trích xuất PDF Python

Định dạng Tài liệu Di động, hay PDF, là một định dạng tệp có thể được sử dụng để trình bày và trao đổi tài liệu một cách đáng tin cậy trên các hệ điều hành. Mặc dù PDF ban đầu được phát minh bởi Adobe, nhưng hiện tại nó là một tiêu chuẩn mở được duy trì bởi Tổ chức Tiêu chuẩn hóa Quốc tế (ISO). Bạn có thể làm việc với một tệp PDF có sẵn bằng Python bằng cách sử dụng gói # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2

# extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2 là gói Python thuần túy mà bạn có thể sử dụng cho nhiều loại thao tác PDF khác nhau

Đến cuối bài viết này, bạn sẽ biết cách thực hiện những điều sau

  • Trích xuất thông tin tài liệu từ PDF bằng Python
  • Xoay trang
  • Hợp nhất các tệp PDF
  • Tách các tệp PDF
  • Thêm hình mờ
  • Mã hóa PDF

Bắt đầu nào

Tải xuống miễn phí. Nhận một chương mẫu từ Thủ thuật Python. Cuốn sách chỉ cho bạn các phương pháp hay nhất về Python với các ví dụ đơn giản mà bạn có thể áp dụng ngay lập tức để viết mã Pythonic + đẹp hơn

Lịch sử của # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 4, # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2 và # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 1

Gói # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 4 ban đầu đã được phát hành từ năm 2005. Bản phát hành chính thức cuối cùng của # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 4 là vào năm 2010. Sau khoảng một năm trôi qua, một công ty tên là Phasit đã tài trợ cho một nhánh của # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 4 có tên là # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2. Mã được viết để tương thích ngược với bản gốc và hoạt động khá tốt trong vài năm, với bản phát hành cuối cùng là vào năm 2016

Có một loạt bản phát hành ngắn của gói có tên là # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 6, sau đó dự án được đổi tên thành # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 1. Tất cả các dự án này đều làm khá giống nhau, nhưng điểm khác biệt lớn nhất giữa # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 4 và PyPDF2+ là các phiên bản sau đã thêm hỗ trợ Python 3. Có một bản rẽ nhánh Python 3 khác của bản gốc # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 4 dành cho Python 3, nhưng bản đó đã không được duy trì trong nhiều năm

Mặc dù # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2 đã bị bỏ rơi vào năm 2016, nhưng nó đã được hồi sinh vào năm 2022 và hiện đang được bảo trì tích cực. # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 1 mới không có khả năng tương thích ngược hoàn toàn với # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2. Hầu hết các ví dụ trong bài viết này sẽ hoạt động hoàn toàn tốt với # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 1, nhưng có một số thì không thể, đó là lý do tại sao # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 1 không được đề cập nhiều hơn trong bài viết này. Vui lòng trao đổi các mục nhập cho # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2 bằng # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 1 và xem nó hoạt động như thế nào đối với bạn

Loại bỏ các quảng cáo

# rotate_pages.py from PyPDF2 import PdfFileReader, PdfFileWriter def rotate_pages(pdf_path): pdf_writer = PdfFileWriter() pdf_reader = PdfFileReader(pdf_path) # Rotate page 90 degrees to the right page_1 = pdf_reader.getPage(0).rotateClockwise(90) pdf_writer.addPage(page_1) # Rotate page 90 degrees to the left page_2 = pdf_reader.getPage(1).rotateCounterClockwise(90) pdf_writer.addPage(page_2) # Add a page in normal orientation pdf_writer.addPage(pdf_reader.getPage(2)) with open('rotate_pages.pdf', 'wb') as fh: pdf_writer.write(fh) if __name__ == '__main__': path = 'Jupyter_Notebook_An_Introduction.pdf' rotate_pages(path) 7. một sự thay thế

Patrick Maupin đã tạo một gói có tên là # rotate_pages.py from PyPDF2 import PdfFileReader, PdfFileWriter def rotate_pages(pdf_path): pdf_writer = PdfFileWriter() pdf_reader = PdfFileReader(pdf_path) # Rotate page 90 degrees to the right page_1 = pdf_reader.getPage(0).rotateClockwise(90) pdf_writer.addPage(page_1) # Rotate page 90 degrees to the left page_2 = pdf_reader.getPage(1).rotateCounterClockwise(90) pdf_writer.addPage(page_2) # Add a page in normal orientation pdf_writer.addPage(pdf_reader.getPage(2)) with open('rotate_pages.pdf', 'wb') as fh: pdf_writer.write(fh) if __name__ == '__main__': path = 'Jupyter_Notebook_An_Introduction.pdf' rotate_pages(path) 7 có thể thực hiện nhiều việc giống như mà # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2 thực hiện. Bạn có thể sử dụng # rotate_pages.py from PyPDF2 import PdfFileReader, PdfFileWriter def rotate_pages(pdf_path): pdf_writer = PdfFileWriter() pdf_reader = PdfFileReader(pdf_path) # Rotate page 90 degrees to the right page_1 = pdf_reader.getPage(0).rotateClockwise(90) pdf_writer.addPage(page_1) # Rotate page 90 degrees to the left page_2 = pdf_reader.getPage(1).rotateCounterClockwise(90) pdf_writer.addPage(page_2) # Add a page in normal orientation pdf_writer.addPage(pdf_reader.getPage(2)) with open('rotate_pages.pdf', 'wb') as fh: pdf_writer.write(fh) if __name__ == '__main__': path = 'Jupyter_Notebook_An_Introduction.pdf' rotate_pages(path) 7 cho tất cả các loại nhiệm vụ tương tự mà bạn sẽ học cách thực hiện trong bài viết này cho # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2, với ngoại lệ đáng chú ý là mã hóa

Sự khác biệt lớn nhất khi nói đến # rotate_pages.py from PyPDF2 import PdfFileReader, PdfFileWriter def rotate_pages(pdf_path): pdf_writer = PdfFileWriter() pdf_reader = PdfFileReader(pdf_path) # Rotate page 90 degrees to the right page_1 = pdf_reader.getPage(0).rotateClockwise(90) pdf_writer.addPage(page_1) # Rotate page 90 degrees to the left page_2 = pdf_reader.getPage(1).rotateCounterClockwise(90) pdf_writer.addPage(page_2) # Add a page in normal orientation pdf_writer.addPage(pdf_reader.getPage(2)) with open('rotate_pages.pdf', 'wb') as fh: pdf_writer.write(fh) if __name__ == '__main__': path = 'Jupyter_Notebook_An_Introduction.pdf' rotate_pages(path) 7 là nó tích hợp với gói ReportLab để bạn có thể lấy một tệp PDF có sẵn và tạo một tệp mới với ReportLab bằng cách sử dụng một số hoặc tất cả các tệp PDF có sẵn

Cài đặt

Cài đặt # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2 có thể được thực hiện với # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 14 hoặc # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 15 nếu bạn đang sử dụng Anaconda thay vì Python thông thường

Đây là cách bạn sẽ cài đặt # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2 với # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 14

# extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 4

Quá trình cài đặt khá nhanh vì # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2 không có bất kỳ phụ thuộc nào. Bạn có thể sẽ dành nhiều thời gian tải xuống gói cũng như thời gian cài đặt gói

Bây giờ, hãy tiếp tục và tìm hiểu cách trích xuất một số thông tin từ tệp PDF

Cách trích xuất thông tin tài liệu từ PDF bằng Python

Bạn có thể sử dụng # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2 để trích xuất siêu dữ liệu và một số văn bản từ PDF. Điều này có thể hữu ích khi bạn đang thực hiện một số loại tự động hóa trên các tệp PDF có sẵn của mình

Dưới đây là các loại dữ liệu hiện tại có thể được trích xuất

  • Tác giả
  • Người sáng tạo
  • nhà sản xuất
  • Vấn đề
  • Tiêu đề
  • Số trang

Bạn cần tìm một bản PDF để sử dụng cho ví dụ này. Bạn có thể sử dụng bất kỳ tệp PDF nào bạn có trên máy của mình. Để mọi thứ trở nên dễ dàng, tôi đã đến Leanpub và lấy một trong những cuốn sách mẫu của mình cho bài tập này. Mẫu bạn muốn tải xuống có tên là # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 50

Hãy viết một số mã bằng tệp PDF đó và tìm hiểu cách bạn có thể truy cập vào các thuộc tính này

# extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path)

Tại đây bạn nhập # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 51 từ gói # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2. # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 51 là một lớp có một số phương thức để tương tác với các tệp PDF. Trong ví dụ này, bạn gọi # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 54, sẽ trả về một thể hiện của # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 55. Điều này chứa hầu hết các thông tin mà bạn quan tâm. Bạn cũng gọi # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 56 trên đối tượng người đọc, trả về số trang trong tài liệu

Ghi chú. Khối mã cuối cùng đó sử dụng chuỗi f mới của Python 3 để định dạng chuỗi. Nếu bạn muốn tìm hiểu thêm, bạn có thể xem Chuỗi f của Python 3. Cú pháp định dạng chuỗi được cải tiến (Hướng dẫn)

Biến # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 57 có một số thuộc tính mẫu mà bạn có thể sử dụng để lấy phần còn lại của siêu dữ liệu mà bạn muốn từ tài liệu. Bạn in thông tin đó ra và cũng có thể gửi lại để sử dụng trong tương lai

Mặc dù # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2 có # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 59, có thể được sử dụng trên các đối tượng trang của nó (không được hiển thị trong ví dụ này), nhưng nó không hoạt động tốt lắm. Một số tệp PDF sẽ trả về văn bản và một số sẽ trả về chuỗi trống. Khi bạn muốn trích xuất văn bản từ PDF, thay vào đó, bạn nên xem dự án # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 40. # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 40 mạnh mẽ hơn nhiều và được thiết kế đặc biệt để trích xuất văn bản từ PDF

Bây giờ bạn đã sẵn sàng tìm hiểu về xoay trang PDF

Loại bỏ các quảng cáo

Cách xoay trang

Đôi khi, bạn sẽ nhận được các tệp PDF chứa các trang ở chế độ ngang thay vì chế độ dọc. Hoặc có lẽ chúng thậm chí còn lộn ngược. Điều này có thể xảy ra khi ai đó quét tài liệu sang PDF hoặc gửi email. Bạn có thể in tài liệu ra và đọc phiên bản giấy hoặc bạn có thể sử dụng sức mạnh của Python để xoay các trang vi phạm

Đối với ví dụ này, bạn có thể chọn một bài báo Real Python và in nó thành PDF

Hãy cùng học cách xoay một số trang của bài viết đó với # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2

# rotate_pages.py from PyPDF2 import PdfFileReader, PdfFileWriter def rotate_pages(pdf_path): pdf_writer = PdfFileWriter() pdf_reader = PdfFileReader(pdf_path) # Rotate page 90 degrees to the right page_1 = pdf_reader.getPage(0).rotateClockwise(90) pdf_writer.addPage(page_1) # Rotate page 90 degrees to the left page_2 = pdf_reader.getPage(1).rotateCounterClockwise(90) pdf_writer.addPage(page_2) # Add a page in normal orientation pdf_writer.addPage(pdf_reader.getPage(2)) with open('rotate_pages.pdf', 'wb') as fh: pdf_writer.write(fh) if __name__ == '__main__': path = 'Jupyter_Notebook_An_Introduction.pdf' rotate_pages(path)

Đối với ví dụ này, bạn cần nhập # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 43 ngoài # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 51 vì bạn sẽ cần viết ra một tệp PDF mới. # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 45 nhận đường dẫn đến tệp PDF mà bạn muốn sửa đổi. Trong chức năng đó, bạn sẽ cần tạo một đối tượng nhà văn mà bạn có thể đặt tên là # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 46 và một đối tượng người đọc tên là # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 47

Tiếp theo, bạn có thể sử dụng # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 48 để có được trang mong muốn. Ở đây bạn lấy trang 0, đó là trang đầu tiên. Sau đó, bạn gọi phương thức # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 49 của đối tượng trang và chuyển 90 độ. Sau đó, ở trang hai, bạn gọi # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 40 và vượt qua nó 90 độ.

Ghi chú. Gói # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2 chỉ cho phép bạn xoay trang theo gia số 90 độ. Nếu không, bạn sẽ nhận được một # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 42

Sau mỗi lần gọi các phương thức xoay vòng, bạn gọi # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 43. Điều này sẽ thêm phiên bản xoay của trang vào đối tượng nhà văn. Trang cuối cùng mà bạn thêm vào đối tượng nhà văn là trang 3 mà không thực hiện bất kỳ thao tác xoay nào đối với nó

Cuối cùng, bạn viết ra tệp PDF mới bằng cách sử dụng # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 44. Nó nhận a làm tham số. Bản PDF mới này sẽ chứa ba trang. Hai trang đầu tiên sẽ được xoay ngược chiều nhau và nằm ngang trong khi trang thứ ba là trang bình thường

Bây giờ, hãy tìm hiểu cách bạn có thể hợp nhất nhiều tệp PDF thành một

Cách hợp nhất các tệp PDF

Có nhiều tình huống mà bạn sẽ muốn lấy hai hoặc nhiều tệp PDF và hợp nhất chúng lại với nhau thành một tệp PDF duy nhất. Ví dụ: bạn có thể có một trang bìa tiêu chuẩn cần tiếp tục với nhiều loại báo cáo. Bạn có thể sử dụng Python để giúp bạn làm điều đó

Đối với ví dụ này, bạn có thể mở một tệp PDF và in một trang dưới dạng một tệp PDF riêng biệt. Sau đó, làm điều đó một lần nữa, nhưng với một trang khác. Điều đó sẽ cung cấp cho bạn một vài đầu vào để sử dụng cho các mục đích ví dụ

Hãy tiếp tục và viết một số mã mà bạn có thể sử dụng để hợp nhất các tệp PDF lại với nhau

# extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 1

Bạn có thể sử dụng # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 45 khi có danh sách các tệp PDF mà bạn muốn hợp nhất với nhau. Bạn cũng sẽ cần biết nơi lưu kết quả, vì vậy hàm này lấy danh sách đường dẫn đầu vào và đường dẫn đầu ra

Sau đó, bạn lặp qua các đầu vào và tạo một đối tượng trình đọc PDF cho từng đối tượng đó. Tiếp theo, bạn sẽ lặp lại tất cả các trang trong tệp PDF và sử dụng # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 43 để thêm từng trang đó vào chính nó

Khi bạn đã hoàn tất việc lặp lại trên tất cả các trang của tất cả các tệp PDF trong danh sách của mình, bạn sẽ viết kết quả ở cuối

Một mục tôi muốn chỉ ra là bạn có thể nâng cao tập lệnh này một chút bằng cách thêm vào một loạt các trang sẽ được thêm vào nếu bạn không muốn hợp nhất tất cả các trang của mỗi tệp PDF. Nếu muốn thử thách, bạn cũng có thể tạo giao diện dòng lệnh cho chức năng này bằng mô-đun # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 47 của Python

Hãy cùng tìm hiểu cách làm ngược lại với việc hợp nhất

Loại bỏ các quảng cáo

Cách chia nhỏ tệp PDF

Đôi khi bạn có thể có một tệp PDF mà bạn cần chia thành nhiều tệp PDF. Điều này đặc biệt đúng với các tệp PDF chứa nhiều nội dung được quét, nhưng có rất nhiều lý do chính đáng để muốn tách một tệp PDF

Đây là cách bạn có thể sử dụng # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2 để chia tệp PDF của mình thành nhiều tệp

# extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 5

Trong ví dụ này, một lần nữa bạn tạo một đối tượng trình đọc PDF và lặp qua các trang của nó. Đối với mỗi trang trong PDF, bạn sẽ tạo một phiên bản trình soạn thảo PDF mới và thêm một trang vào đó. Sau đó, bạn sẽ viết trang đó ra một tệp có tên duy nhất. Khi tập lệnh chạy xong, bạn sẽ chia từng trang của tệp PDF gốc thành các tệp PDF riêng biệt

Bây giờ, hãy dành một chút thời gian để tìm hiểu cách bạn có thể thêm hình mờ vào tệp PDF của mình

Cách thêm hình mờ

Hình mờ đang xác định hình ảnh hoặc mẫu trên tài liệu in và kỹ thuật số. Một số hình mờ chỉ có thể được nhìn thấy trong điều kiện ánh sáng đặc biệt. Lý do thủy ấn quan trọng là vì nó cho phép bạn bảo vệ tài sản trí tuệ của mình, chẳng hạn như hình ảnh hoặc tệp PDF. Một thuật ngữ khác cho hình mờ là lớp phủ

Bạn có thể sử dụng Python và # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2 để tạo hình mờ cho tài liệu của mình. Bạn cần có một tệp PDF chỉ chứa hình ảnh hoặc văn bản hình mờ của bạn

Hãy tìm hiểu cách thêm hình mờ ngay bây giờ

# extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 4

# extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 20 chấp nhận ba đối số

  1. # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 21. đường dẫn tệp PDF được đánh dấu mờ
  2. # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 22. đường dẫn bạn muốn lưu phiên bản PDF có hình mờ
  3. # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 23. một tệp PDF có chứa hình ảnh hoặc văn bản hình mờ của bạn

Trong mã, bạn mở PDF hình mờ và chỉ lấy trang đầu tiên từ tài liệu vì đó là nơi hình mờ của bạn sẽ nằm. Sau đó, bạn tạo một đối tượng trình đọc PDF bằng cách sử dụng đối tượng # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 21 và một đối tượng chung chung # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 46 để viết ra tệp PDF có hình mờ

Bước tiếp theo là lặp lại các trang trong # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 21. Đây là nơi phép màu xảy ra. Bạn sẽ cần gọi cho # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 27 và chuyển số # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 28. Khi bạn làm điều đó, nó sẽ phủ # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 28 lên đầu trang hiện tại. Sau đó, bạn thêm trang mới được hợp nhất đó vào đối tượng # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 46 của mình

Cuối cùng, bạn ghi tệp PDF mới được đánh dấu mờ vào đĩa và bạn đã hoàn tất

Chủ đề cuối cùng bạn sẽ tìm hiểu là cách # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2 xử lý mã hóa

Cách mã hóa PDF

# extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2 hiện chỉ hỗ trợ thêm mật khẩu người dùng và mật khẩu chủ sở hữu vào tệp PDF có sẵn. Trong vùng đất PDF, mật khẩu chủ sở hữu về cơ bản sẽ cung cấp cho bạn các đặc quyền của quản trị viên đối với PDF và cho phép bạn đặt quyền trên tài liệu. Mặt khác, mật khẩu người dùng chỉ cho phép bạn mở tài liệu

Theo những gì tôi có thể nói, # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2 thực sự không cho phép bạn đặt bất kỳ quyền nào trên tài liệu mặc dù nó cho phép bạn đặt mật khẩu chủ sở hữu

Bất kể, đây là cách bạn có thể thêm mật khẩu, vốn cũng sẽ mã hóa PDF

# extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 4

# extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 24 nhận đường dẫn PDF đầu vào và đầu ra cũng như mật khẩu mà bạn muốn thêm vào PDF. Sau đó, nó sẽ mở một trình soạn thảo PDF và một đối tượng trình đọc, như trước đây. Vì bạn sẽ muốn mã hóa toàn bộ tệp PDF đầu vào, bạn sẽ cần lặp lại tất cả các trang của nó và thêm chúng vào trình ghi

Bước cuối cùng là gọi # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 25, lấy mật khẩu người dùng, mật khẩu chủ sở hữu và có nên thêm mã hóa 128-bit hay không. Mặc định là bật mã hóa 128 bit. Nếu bạn đặt thành # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 26 thì mã hóa 40 bit sẽ được áp dụng thay thế

Ghi chú. Mã hóa PDF sử dụng RC4 hoặc AES (Tiêu chuẩn mã hóa nâng cao) để mã hóa PDF theo pdflib. com

Chỉ vì bạn đã mã hóa PDF của mình không có nghĩa là nó nhất thiết phải an toàn. Có các công cụ để xóa mật khẩu khỏi tệp PDF. Nếu bạn muốn tìm hiểu thêm, Đại học Carnegie Mellon có một bài báo thú vị về chủ đề này

Loại bỏ các quảng cáo

Phần kết luận

Gói # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2 khá hữu ích và thường khá nhanh. Bạn có thể sử dụng # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2 để tự động hóa các công việc lớn và tận dụng khả năng của nó để giúp bạn thực hiện công việc của mình tốt hơn

Trong hướng dẫn này, bạn đã học cách làm như sau

  • Trích xuất siêu dữ liệu từ PDF
  • Xoay trang
  • Hợp nhất và chia nhỏ các tệp PDF
  • Thêm hình mờ
  • Thêm mã hóa

Ngoài ra, hãy để mắt đến gói # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 1 mới hơn vì nó có thể sẽ sớm thay thế # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2. Bạn cũng có thể muốn xem # rotate_pages.py from PyPDF2 import PdfFileReader, PdfFileWriter def rotate_pages(pdf_path): pdf_writer = PdfFileWriter() pdf_reader = PdfFileReader(pdf_path) # Rotate page 90 degrees to the right page_1 = pdf_reader.getPage(0).rotateClockwise(90) pdf_writer.addPage(page_1) # Rotate page 90 degrees to the left page_2 = pdf_reader.getPage(1).rotateCounterClockwise(90) pdf_writer.addPage(page_2) # Add a page in normal orientation pdf_writer.addPage(pdf_reader.getPage(2)) with open('rotate_pages.pdf', 'wb') as fh: pdf_writer.write(fh) if __name__ == '__main__': path = 'Jupyter_Notebook_An_Introduction.pdf' rotate_pages(path) 7, có thể làm nhiều việc giống như mà # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2 có thể làm

Đọc thêm

Nếu bạn muốn tìm hiểu thêm về cách làm việc với các tệp PDF trong Python, bạn nên xem một số tài nguyên sau để biết thêm thông tin

  • Trang web # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 2
  • Trang Github cho # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 1
  • Trang Github cho # rotate_pages.py from PyPDF2 import PdfFileReader, PdfFileWriter def rotate_pages(pdf_path): pdf_writer = PdfFileWriter() pdf_reader = PdfFileReader(pdf_path) # Rotate page 90 degrees to the right page_1 = pdf_reader.getPage(0).rotateClockwise(90) pdf_writer.addPage(page_1) # Rotate page 90 degrees to the left page_2 = pdf_reader.getPage(1).rotateCounterClockwise(90) pdf_writer.addPage(page_2) # Add a page in normal orientation pdf_writer.addPage(pdf_reader.getPage(2)) with open('rotate_pages.pdf', 'wb') as fh: pdf_writer.write(fh) if __name__ == '__main__': path = 'Jupyter_Notebook_An_Introduction.pdf' rotate_pages(path) 7
  • Trang web ReportLab
  • Trang Github cho # extract_doc_info.py from PyPDF2 import PdfFileReader def extract_information(pdf_path): with open(pdf_path, 'rb') as f: pdf = PdfFileReader(f) information = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() txt = f""" Information about {pdf_path}: Author: {information.author} Creator: {information.creator} Producer: {information.producer} Subject: {information.subject} Title: {information.title} Number of pages: {number_of_pages} """ print(txt) return information if __name__ == '__main__': path = 'reportlab-sample.pdf' extract_information(path) 40
  • lạc đà. Khai thác bảng PDF cho con người
  • Tạo và sửa đổi tệp PDF bằng Python (Hướng dẫn)

Đánh dấu là đã hoàn thành

Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Cách làm việc với tệp PDF trong Python

🐍 Thủ thuật Python 💌

Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python

Gửi cho tôi thủ thuật Python »

Giới thiệu về Mike Driscoll

Mike đã lập trình bằng Python hơn một thập kỷ và thích viết về Python

» Thông tin thêm về Mike

Mỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là

Aldren

Brad

Joanna

Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bậc thầy Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bạn nghĩ sao?

Đánh giá bài viết này

Tweet Chia sẻ Chia sẻ Email

Bài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?

Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi

Tôi có thể cạo PDF Python không?

Với sự trợ giúp của thư viện python, chúng tôi có thể tiết kiệm thời gian và tiền bạc bằng cách tự động hóa quy trình trích xuất dữ liệu từ tệp PDF và chuyển đổi dữ liệu phi cấu trúc thành dữ liệu bảng .

Cách dễ nhất để trích xuất văn bản từ PDF bằng Python là gì?

Công cụ chúng tôi đang sử dụng trong hướng dẫn này là PDF Plumber, một gói mã nguồn mở của python, rất tuyệt vời, đơn giản và mạnh mẽ. .
Nhập mô-đun của bạn. pip cài đặt pdfplumber -qimport pdfplumber. .
open('đường dẫn/đến/thư mục').
trang[ ].
trích_văn()

Làm cách nào để trích xuất văn bản từ PDF?

Cách trích xuất văn bản từ PDF .
Bước 1. Tải lên tệp PDF. Đăng nhập vào công cụ OCR của chúng tôi và chọn tệp PDF để tải lên. .
Bước 2. Thêm quy tắc phân tích cú pháp. Trước khi tách văn bản khỏi PDF, hãy thêm các quy tắc để tự động hóa và tăng tốc quá trình. .
Bước 3. Xuất và lưu văn bản của bạn. Nó khá là nhiều

Chủ đề