70 lines
2.4 KiB
Python
70 lines
2.4 KiB
Python
import PyPDF2
|
||
import re
|
||
import fitz
|
||
import os
|
||
import webbrowser
|
||
from tkinter import *
|
||
from tkinter import ttk
|
||
from tkinter.messagebox import showerror
|
||
def config():
|
||
if not os.path.exists("Settings.conf"):
|
||
f = open("Settings.conf", "w")
|
||
f.write("DeleteOld=0")
|
||
f.close()
|
||
f = open("Settings.conf", "r")
|
||
settings = f.read().split('\n')
|
||
global Deleteold
|
||
Deleteold = int(settings[0][-1])
|
||
|
||
def sign(path_pdf,output):
|
||
image = "sign.png"
|
||
# old params 402 17 565 230
|
||
position = fitz.Rect(432,24,500,230)
|
||
file_handle = fitz.open(path_pdf)
|
||
first_page = file_handle[0]
|
||
first_page.insert_image(position, filename=image)
|
||
file_handle.save(output)
|
||
|
||
|
||
def work(path_pdf):
|
||
data = extractData(path_pdf)
|
||
if not os.path.exists(data[0] + ' ' + 'SN ' + data[1] + ' ' + data[2] + '.pdf'):
|
||
sign(path_pdf, data[0] + ' ' + 'SN ' + data[1] + ' ' + data[2] + '.pdf')
|
||
if Deleteold:
|
||
os.remove(path_pdf)
|
||
return 1
|
||
return 0
|
||
|
||
def extractData(path_pdf):
|
||
pdf = open(path_pdf, 'rb')
|
||
read = PyPDF2.PdfReader(pdf)
|
||
page = read.pages[0]
|
||
all_text = page.extract_text()
|
||
#print(all_text)
|
||
if all_text == '':
|
||
showerror(title="Ошибка", message=f'Файл {path_pdf} является картинкой, уберите его и перезапустите программу')
|
||
return 1
|
||
data = []
|
||
if len(re.findall('ЦБ-\\d{9}', all_text)) != 0:
|
||
data.append(re.findall('ЦБ-\\d{9}', all_text)[0])
|
||
else:
|
||
data.append('ЗН ' + re.findall('Заказ-наряд \\d{12}', all_text)[0][11:])
|
||
if len(re.findall('\\b\\d{6}\\b', all_text.split('SN')[1].split('Дата')[0])) != 0:
|
||
data.append(re.findall('\\b\\d{6}\\b', all_text.split('SN')[1].split('Дата')[0])[0])
|
||
else:
|
||
data.append(re.findall('\\b\\d{5}\\b', all_text.split('SN')[1].split('Дата')[0])[0])
|
||
data.append(re.findall('\\d\\d\\.\\d\\d\\.\\d{4}', all_text.split('Дата')[1])[0].replace('.', ''))
|
||
pdf.close()
|
||
return data
|
||
def get_pdf():
|
||
filenames = os.listdir('.')
|
||
return filenames
|
||
def main():
|
||
config()
|
||
for i in get_pdf():
|
||
if i[-3:] == 'pdf':
|
||
work(os.path.abspath(i))
|
||
for i in get_pdf():
|
||
if i[-3:] == 'pdf' and i[0:2] == 'ЦБ':
|
||
webbrowser.open_new_tab(os.path.abspath(i))
|
||
main()
|