Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import fitz
- import tkinter as tk
- from tkinter import *
- from tkinter import filedialog as fd
- import logging
- def main():
- # логирование
- FORMAT = '[%(levelname)s] %(message)s'
- file_handler = logging.FileHandler('found.log', 'w', encoding='utf-8')
- file_handler.setFormatter(logging.Formatter(FORMAT))
- logging.basicConfig(level=logging.DEBUG, format=FORMAT)
- logging.getLogger().addHandler(file_handler)
- root = Tk() # главное окно
- # переменные для текстовых полей
- filename = StringVar()
- search = StringVar()
- searchres = StringVar()
- # открытие файла
- def openpdf():
- filename1 = fd.askopenfilename()
- filename.set(filename1)
- # поиск
- def searchpdf():
- flag = False
- terms = search.get().split(',')
- pdf_document = fitz.open(filename.get())
- count = pdf_document.pageCount
- for page in list(range(count)):
- for term in terms:
- if term in pdf_document[page].getText().lower():
- logging.info(term + ': Found на странице ' + str(pdf_document[page].number))
- flag = True
- if flag:
- searchres.set('Совпадения найдены, отчет в файле found.log')
- else:
- searchres.set('Совпадения не найдены')
- root.title("Поиск по PDF")
- x = (root.winfo_screenwidth() - 300) / 2
- y = (root.winfo_screenheight() - 200) / 2
- root.wm_geometry("300x200+%d+%d" % (x, y))
- l1 = Label(width=50, height=1, text="Выберите файл")
- e1 = Entry(width=50, textvariable=filename)
- b1 = tk.Button(root, text='Открыть PDF', command=openpdf, width=10)
- l1.pack()
- e1.pack()
- b1.pack()
- l2 = Label(width=50, height=1, text="Введите искомые слова через запятую:")
- e2 = Entry(width=50, textvariable=search)
- b2 = tk.Button(root, text='Поиск по PDF', command=searchpdf, width=10)
- l3 = Label(width=50, height=1, text="Результаты поиска:")
- e3 = Entry(width=50, textvariable=searchres)
- l2.pack()
- e2.pack()
- b2.pack()
- l3.pack()
- e3.pack()
- root.mainloop()
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement