@apiwi

Как в модуле Fitz сделать обрезку файла в цикле?

Есть PDF файл, нужно из него нарезать кучу PNG картинок по разным координатам. Делаю это в цикле FOR, после обрезки первого изображения выдаёт ошибку "rect not in mediabox" (начинает обрезать обрезанное изображение), как это исправить, чтоб в цикле не делать "fitz.open(f"{PATH}/files/timetables/input/{title}")"

import fitz
fitz_doc = fitz.open(f"{PATH}/files/timetables/input/{title}")
        fitz_page = fitz_doc[0]
        
        print(fitz_page.rect.width, fitz_page.rect.height)
        if students[0].get("corpus_1") and doc["corpus"] == "1":
            groups = students[0]["corpus_1"]
            for group in groups:
                group_name = group["group_name"]
                try:
                    coords = fitz_page.search_for(group_name)[0]
                    highlight = fitz_page.add_rect_annot(coords)
                    x0, y0, x1, y1 = highlight.rect
                    fitz_page.set_cropbox(fitz.Rect(x0-20, y0-15, x1+70, y1+170).round() )
                    fitz_page.get_pixmap(matrix = magnify).save(f"{PATH}/files/timetables/output/{group_name}.png")


                except Exception as error:
                    print(error)
                    print(f"{group_name} Error")
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
@apiwi Автор вопроса
fitz_doc = fitz.open(f"{PATH}/files/timetables/input/{title}")
        fitz_page = fitz_doc[0]
        page_box = fitz_page.cropbox
        if students[0].get("corpus_1") and doc["corpus"] == "1":
            groups = students[0]["corpus_1"]
            for group in groups:
                fitz_page.set_mediabox(page_box)
                group_name = group["group_name"]
                try:
                    coords = fitz_page.search_for(group_name)[0]
                    #highlight = fitz_page.add_rect_annot(coords)
                    x0, y0, x1, y1 = coords
                    fitz_page.set_cropbox(fitz.Rect(x0-20, y0-15, x1+70, y1+170).round() )
                    fitz_page.get_pixmap(matrix = magnify).save(f"{PATH}/files/timetables/output/{group_name}.png")


                except Exception as error:
                    print(error)
                    print(f"{group_name} Error")
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы