使用python过滤pdf

问题描述 投票:0回答:1

我一直在尝试自己寻找答案,但遗憾的是从未找到我想要的答案,所以我有一个 PDF 文件,其中包含多个不同的 pdf 文件,我想创建一个 python 代码(使用 venv)来过滤带页面的 pdf 文件 例如:

  1. 客户想要过滤他的pdf文件(界面将像IlovePdf网站)
  2. 他点击上传文件
  3. 然后选择他要过滤的页面(例如从1-13,从14-20,从21-25)
  4. 然后过滤后的新文件将下载到文件夹中

然后代码过滤该文件,然后提供这些过滤后的文件供下载

这一切都将像计算机中的应用程序一样,因此我需要创建一个界面,我将自己完成(至少我会尝试这样做)

我尝试使用 glob 但实际上并没有帮助我,然后我将 venv 安装到我的 python 项目中,就是这样

import glob, os

folder_path = 'C:\\work\\PythonPDF'

os.chdir(folder_path)
files = [file for file in glob.glob("*.pdf")]
files = [file for file in files if file.__contains__('Conlclusion')]
print(files)

这是示例之一,但它用我需要的页面过滤词

import fitz

def extract_pdfs(input_pdf_path, output_dir):
    document = fitz.open(input_pdf_path)
    pdf_count = 1
    new_pdf = fitz.open()

    for i in range(document.page_count):
        page = document.load_page(i)
        page_text = page.get_text("text")

        if "Abstract" in page_text:
            if new_pdf.page_count > 0:
                new_pdf.save(f"{output_dir}/extracted_pdf_{pdf_count}.pdf")
                pdf_count += 1
            new_pdf = fitz.open()

        new_pdf.insert_pdf(document, from_page=i, to_page=i)

    if new_pdf.page_count > 0:
        new_pdf.save(f"{output_dir}/extracted_pdf_{pdf_count}.pdf")

    print(f"Извлечено {pdf_count} отдельных PDF файлов.")

    input_pdf = r"C:\work\PythonPDF\Filter.pdf"
    output_directory = r"C:\work\PythonPDF\AllPdf"

    extract_pdfs(input_pdf, output_directory)

如您所见,它用“摘要”一词进行过滤,但我需要用“页面”:( 谢谢!

python pdf filter interface
1个回答
0
投票

要按特定页面范围拆分 PDF 文件,您可以使用 PyMuPDF 库(也称为 fitz),该库非常适合处理 PDF。下面是一个 Python 脚本,它接受输入 PDF 和页面范围,提取指定的页面,并将每个范围保存为新的 PDF。此示例不使用 glob,因为它主要用于按名称或扩展名查找文件,而不是用于拆分页面。 为了帮助您,我将分解代码,包括加载 PDF、根据范围提取页面以及保存它们的核心逻辑。这是页面范围过滤的示例脚本: 设置虚拟环境和依赖项 在项目目录中创建虚拟环境: python -m venv venv 激活虚拟环境: 在 Windows 上: u000benv\脚本激活 在 Mac/Linux 上: u000benv\脚本激活 安装 PyMuPDF: pip 安装 pymupdf

代码说明

extract_pages_by_ranges function:
    input_pdf_path: Path to the input PDF file.
    page_ranges: List of tuples representing the start and end pages for each range, e.g., [(1, 13), (14, 20)].
    output_dir: Directory where the filtered PDF files will be saved.

Looping through the page ranges:
    For each page range, a new PDF is created.
    Each page specified in the range is added to this new PDF.
    The file is saved with a name indicating the range, like filtered_pages_1-13.pdf.

Saving each range as a separate file:
    After inserting pages for each range, the file is saved and closed.

与用户界面集成

要创建具有类似于 ILovePDF 界面的用户友好应用程序,请考虑使用 Tkinter 或更强大的框架(如 PyQt 或 Kivy)作为 GUI。然后可以将函数 extract_pages_by_ranges 连接到 GUI 中的文件上传按钮、页面范围输入和保存/下载按钮。

© www.soinside.com 2019 - 2024. All rights reserved.