我一直在尝试自己寻找答案,但遗憾的是从未找到我想要的答案,所以我有一个 PDF 文件,其中包含多个不同的 pdf 文件,我想创建一个 python 代码(使用 venv)来过滤带页面的 pdf 文件 例如:
然后代码过滤该文件,然后提供这些过滤后的文件供下载
这一切都将像计算机中的应用程序一样,因此我需要创建一个界面,我将自己完成(至少我会尝试这样做)
我尝试使用 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)
如您所见,它用“摘要”一词进行过滤,但我需要用“页面”:( 谢谢!
要按特定页面范围拆分 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 中的文件上传按钮、页面范围输入和保存/下载按钮。