Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Вопрос Как создать скрип для обрезание pdf файла?

Пользователь
Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2020
Сообщения
467
Реакции
103
Код:
Expand Collapse Copy
import fitz  # PyMuPDF
import os

input_folder = "/Users/aleksej/Documents/A4"
output_folder = os.path.join(input_folder, "cropped")
os.makedirs(output_folder, exist_ok=True)

# === твои значения (интерпретируются как отступы слева и сверху, и размеры области)
left = -0.51      # X от левой кромки страницы (может быть отрицательным)
top = 6.21        # Y от верхней кромки страницы
width = 292.15
height = 415.59

for filename in os.listdir(input_folder):
    if not filename.lower().endswith(".pdf"):
        continue

    filepath = os.path.join(input_folder, filename)
    doc = fitz.open(filepath)
    print(f"\nФайл: {filename} — страниц: {len(doc)}")

    for pindex, page in enumerate(doc, start=1):
        media = page.rect            # rect: (0,0) внизу слева; width/height доступны
        pw, ph = media.width, media.height

        # Преобразуем твоё (left, top, width, height) -> координаты fitz (x1,y1,x2,y2)
        # left — от левого края, top — от верхнего края
        x1 = left
        x2 = left + width

        # В PyMuPDF y=0 — снизу, поэтому:
        y2 = ph - top            # верхняя граница в системе fitz
        y1 = y2 - height         # нижняя граница

        # Клин к media box — чтобы CropBox полностью был внутри MediaBox
        # (PyMuPDF требует этого)
        x1 = max(0.0, x1)
        y1 = max(0.0, y1)
        x2 = min(pw, x2)
        y2 = min(ph, y2)

        # Защитимся от неверных размеров (если, например, width > pw)
        if x2 <= x1 or y2 <= y1:
            print(f"  Страница {pindex}: некорректная область после клинования — пропускаю.")
            continue

        crop_rect = fitz.Rect(x1, y1, x2, y2)
        print(f"  Страница {pindex}: page {pw:.2f}×{ph:.2f} -> crop {crop_rect}")

        # Устанавливаем CropBox
        page.set_cropbox(crop_rect)

    output_path = os.path.join(output_folder, filename)
    doc.save(output_path)
    print(f"✅ Сохранён: {output_path}")

print("\nГотово — проверь файлы в папке:", output_folder)


мне нужно что бы код вырезал это место из пдф но почему то не получаеться чатgpt не помогает
 
не понял тебя
то нужно для работы — чтобы печатать накладные. Накладные приходят в формате PDF, но при печати напрямую из PDF часть документа обрезается, поэтому требуется что бы каждый раз не обрезать хочу скрип сделать
 
Последнее редактирование:
Назад
Сверху Снизу