Как сохранить нужный мне лист PDF с помощью модуля fitz в определенном месте

Пишу приложение, которое сохраняет нужный мне лист PDF с помощью модуля fitz.

часть кода:

import fitz
import openpyxl as op
import os
....
....    
filename = 'Документы к выписке по счету.pdf'  # файл PDF

pdf = fitz.open(filename)       

for current_page in range(len(pdf)):
    page = pdf.load_page(current_page)

    # перебираем все ключи/значения словаря - платежек и даты
    for key, value in payment_order_dict.items():   
        search_term = key
        search_date = value
        if page.search_for(search_term):
            print('%s найдено на %i странице' % (search_term, current_page + 1))
            pdf2 = fitz.open()
            pdf2.insert_pdf(pdf, from_page=current_page, to_page=current_page)            
            # сохраняем искомую платежку в файл PDF
        
            pdf2.save(f"пп {search_term} от {search_date}.pdf")
            # сохраняем искомую платежку в файл PDF

Документ сохраняется в папке проекта, а мне нужно сохранить его например по пути C:\Users\Pablic\Desktop. Подскажите, как это сделать.


Ответы (1 шт):

Автор решения: mrgervant

Вам необходимо создать переменную с полным путём до желаемого места файла и передавать его в функцию. Для определения папки пользователя ПК (если у Вас это Pablic) можно использовать Path.home():

from pathlib import Path

BASE_DIR = Path.home()
# C:\Users\Pablic
path_file = Path(BASE_DIR, 'Desktop/myfile.pdf')
# C:\Users\Pablic\Desktop\myfile.rar

При необходимости путь можно создать в формате str:

str_file = f'{BASE_DIR}\\Desktop\\myfile.pdf'

Если правильно понял, то файл Вы сохраняете через pdf2.save() - соответственно, в него и нужно передать путь. Это может выглядеть так:

new_file = f'{Path.home()}\\Desktop\\пп {search_term} от {search_date}.pdf'
pdf2.save(new_file)

Судя по всему библиотека fitz устарела, и её новое название pymupdf. Эта библиотека поддерживает Path-формат.

→ Ссылка