import fitz # PyMuPDF
import json
import os
from tkinter import *
from tkinter import filedialog, simpledialog

class PDFReader:
def init(self, master):
self.master = master
self.master.title("PDF Reader")


    self.page_number = 0
    self.zoom_level = 1.0  # Уровень масштабирования

    self.notes = {}
    
    self.pdf_document = None
    self.current_file_path = None
    
    self.canvas = Canvas(master)
    self.canvas.pack(fill=BOTH, expand=1)
    
    # Кнопки
    self.button_frame = Frame(master)
    self.button_frame.pack(fill=X, side=BOTTOM)
    
    Button(self.button_frame, text="Открыть PDF", command=self.open_pdf).pack(side=LEFT)
    Button(self.button_frame, text="Заметка", command=self.add_note).pack(side=LEFT)
    Button(self.button_frame, text="Рисовать", command=self.start_drawing).pack(side=LEFT)
    Button(self.button_frame, text="Сохранить", command=self.save_progress).pack(side=LEFT)
    Button(self.button_frame, text="Выход", command=self.master.quit).pack(side=LEFT)
    
    # Обработчик событий прокрутки мыши
    self.canvas.bind("<MouseWheel>", self.on_mouse_wheel)

def open_pdf(self):
    file_path = filedialog.askopenfilename(filetypes=[("PDF files", "*.pdf")])
    if file_path:
        self.current_file_path = file_path
        self.pdf_document = fitz.open(file_path)
        self.page_number = 0
        self.load_page(self.page_number)

        # Загрузка последней сохраненной страницы
        if os.path.exists("progress.json"):
            with open("progress.json", "r") as f:
                progress = json.load(f)
                if progress["file_path"] == self.current_file_path:
                    self.page_number = progress["page_number"]
                    self.load_page(self.page_number)

def load_page(self, page_number):
    if self.pdf_document is not None and 0 <= page_number < len(self.pdf_document):
        page = self.pdf_document[page_number]
        rect = page.rect  # Размер страницы
        pix = page.get_pixmap(matrix=fitz.Matrix(self.zoom_level, self.zoom_level))
        img = PhotoImage(data=pix.tobytes("png"))
        self.canvas.delete("all")  # Очищаем Canvas перед новым изображением
        self.canvas.create_image(0, 0, anchor=NW, image=img)
        self.canvas.image = img  # Сохраняем ссылку на изображение

        # Устанавливаем размер окна под размер страницы
        self.master.geometry(f"{int(rect.width * self.zoom_level)}x{int(rect.height * self.zoom_level)}")
        self.master.title(f"PDF Reader - {self.current_file_path} - Страница {page_number + 1}")

def add_note(self):
    note = simpledialog.askstring("Заметка", "Введите вашу заметку:")
    if note and self.pdf_document:
        self.notes[self.page_number] = note
        print(f"Заметка добавлена на странице {self.page_number + 1}: {note}")

def start_drawing(self):
    # Реализация функции рисования (по желанию)
    print("Функция рисования не реализована.")

def save_progress(self):
    if self.current_file_path:
        with open("progress.json", "w") as f:
            json.dump({"file_path": self.current_file_path, "page_number": self.page_number}, f)

def zoom_in(self):
    self.zoom_level *= 1.1  # Увеличиваем уровень масштабирования
    self.load_page(self.page_number)

def zoom_out(self):
    self.zoom_level /= 1.1  # Уменьшаем уровень масштабирования
    self.load_page(self.page_number)

def on_mouse_wheel(self, event):
    if event.state & 0x0004:  # Проверка нажатия Ctrl
        # Если Ctrl зажат, изменяем масштаб
        if event.delta > 0:
            self.zoom_in()
        else:
            self.zoom_out()
    else:
        # Если Ctrl не зажат, переключаем между страницами
        if event.delta > 0:
            self.next_page()
        else:
            self.prev_page()

def next_page(self):
    if self.pdf_document and self.page_number < len(self.pdf_document) - 1:
        self.page_number += 1
        self.load_page(self.page_number)

def prev_page(self):
    if self.pdf_document and self.page_number > 0:
        self.page_number -= 1
        self.load_page(self.page_number)
if name == "main":
root = Tk()
pdf_reader = PDFReader(root)
root.mainloop() - исправь все ошибки