У меня есть функция которая из одного .pdf файла перекидывает электросхемы в другие файлы, но есть проблема:
если зайти в .pdf файлы после всего процесса (условно у меня 3 .pdf документа), то с каждым документом схем будет все больше (первый .pdf = 1 схема
второй .pdf = 2 схемы
третий .pdf = 3 схемы) а должно быть в каждой по одной
Функция:
def insert_docx_into_docx(electro_path, passports_path):
"""
1. Поворачивает все страницы схемы PDF на -90 градусов и сохраняет как временный файл.
2. Вставляет эту схему ровно ОДИН раз в каждый паспорт PDF в указанной папке.
"""
try:
passports_folder = Path(passports_path)
schema_pdf = Path(electro_path)
if not passports_folder.exists():
print(f"❌ Папка с паспортами не найдена: {passports_folder}")
return False
if not schema_pdf.exists():
print(f"❌ Схема не найдена: {schema_pdf}")
return False
# Шаг 1: Создаем временный файл повернутой схемы
temp_schema_path = passports_folder / "__temp_rotated_schema__.pdf"
with fitz.open(schema_pdf) as original:
with fitz.open() as rotated:
for page in original:
# Поворачиваем каждую страницу на -90°
rotated_page = rotated.new_page(
width=page.rect.height,
height=page.rect.width
)
rotated_page.show_pdf_page(
rotated_page.rect,
original,
page.number,
rotate=-90
)
rotated.save(temp_schema_path)
print(f"✅ Временный файл схемы создан: {temp_schema_path.name}")
# Шаг 2: Вставляем схему в каждый паспорт
for passport_file in passports_folder.glob("ШУ_*.pdf"):
print(f"▶ Обработка паспорта: {passport_file.name}")
temp_output = passports_folder / f"__temp__{passport_file.name}"
try:
# Новый документ с копией паспорта
with fitz.open(passport_file) as passport_doc:
with fitz.open() as result:
result.insert_pdf(passport_doc)
with fitz.open(temp_schema_path) as schema_doc:
result.insert_pdf(schema_doc)
result.save(temp_output)
# Заменяем оригинал
passport_file.unlink()
temp_output.rename(passport_file)
print(f"✓ Добавлена схема в: {passport_file.name}")
except Exception as e:
print(f"⛔ Ошибка при вставке в {passport_file.name}: {e}")
if temp_output.exists():
temp_output.unlink()
# Удаляем временный файл схемы
if temp_schema_path.exists():
temp_schema_path.unlink()
print("️ Временный файл схемы удалён")
print("✅ Обработка завершена успешно")
return True
except Exception as e:
print(f"❌ Критическая ошибка: {e}")
return False