Пользователь
- Статус
- Оффлайн
- Регистрация
- 12 Июн 2020
- Сообщения
- 467
- Реакции
- 103
Код:
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 не помогает