Задать вопрос
@ArtemMik
Python

Как совместить два .pdf файла?

У меня есть функция которая из одного .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
  • Вопрос задан
  • 96 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы