"""
Склейка скриншотов страниц учебника в один PDF-файл.
ПОДГОТОВКА:
1. Установи библиотеку Pillow (один раз):
pip install Pillow
2. Сложи все скриншоты в одну папку.
Переименуй их по порядку страниц, ОБЯЗАТЕЛЬНО с ведущими нулями:
001.png, 002.png, 003.png, ... 045.png
(без нулей "2.png" встанет после "10.png" при сортировке)
3. Ниже в разделе НАСТРОЙКИ укажи:
- путь к папке со скриншотами (INPUT_FOLDER)
- путь и имя итогового PDF (OUTPUT_PDF)
- при необходимости — обрезку полей (CROP_BOX)
4. Запусти скрипт:
python screenshots_to_pdf.py
"""
from pathlib import Path
from PIL import Image
# ================== НАСТРОЙКИ ==================
# Папка, куда ты сложил скриншоты
INPUT_FOLDER = r"C:\Users\ИМЯ\Desktop\Тетрадь"
# Куда сохранить итоговый PDF
OUTPUT_PDF = r"C:\Users\ИМЯ\Desktop\Тетрадь\tetrad.pdf"
# Нужно ли обрезать одинаковые поля у ВСЕХ картинок (например, убрать
# полоску браузера сверху или боковую панель читалки).
# Если обрезка не нужна — оставь None.
# Если нужна — впиши координаты в пикселях: (слева, сверху, справа, снизу)
# Проще всего открыть один скриншот в Paint/любом просмотрщике,
# навести курсор на нужные углы области и посмотреть координаты.
CROP_BOX = None # например: (0, 80, 1920, 1040)
# Разрешённые расширения файлов-скриншотов
EXTENSIONS = {".png", ".jpg", ".jpeg"}
# =================================================
def main():
folder = Path(INPUT_FOLDER)
if not folder.exists():
print(f"Папка не найдена: {folder}")
return
files = sorted(
[f for f in folder.iterdir() if f.suffix.lower() in EXTENSIONS]
)
if not files:
print("В папке не найдено ни одного изображения (png/jpg).")
return
print(f"Найдено файлов: {len(files)}")
for f in files:
print(" ", f.name)
images = []
for f in files:
img = Image.open(f).convert("RGB")
if CROP_BOX is not None:
img = img.crop(CROP_BOX)
images.append(img)
first, rest = images[0], images[1:]
Path(OUTPUT_PDF).parent.mkdir(parents=True, exist_ok=True)
first.save(OUTPUT_PDF, save_all=True, append_images=rest)
print(f"\nГотово! PDF сохранён: {OUTPUT_PDF}")
print(f"Страниц в PDF: {len(images)}")
if __name__ == "__main__":
main()