import tkinter as tk
from tkinter import filedialog, messagebox
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
import os
import unicodedata

def remove_diacritics(text):
    """Elimină diacriticele din text"""
    # Normalizare la forma NFKD și eliminarea marcajelor diacritice
    normalized = unicodedata.normalize('NFKD', text)
    return ''.join(c for c in normalized if not unicodedata.combining(c))

def create_pdf(input_files, header_text, footer_text):
    for txt_file in input_files:
        pdf_file = os.path.splitext(txt_file)[0] + ".pdf"
        c = canvas.Canvas(pdf_file, pagesize=A4)
        width, height = A4
        
        # Setări font
        c.setFont("Helvetica", 12)
        
        # Adaugă header (fără diacritice)
        header_clean = remove_diacritics(header_text)
        c.setFillColor(colors.red)
        c.drawString(50, height - 30, header_clean.upper())
        
        # Adaugă footer (fără diacritice)
        footer_clean = remove_diacritics(footer_text)
        c.drawString(50, 30, footer_clean.upper())
        
        # Linii decorative
        c.setStrokeColor(colors.red)
        c.line(50, height - 40, width - 50, height - 40)  # sub header
        c.line(50, 40, width - 50, 40)  # deasupra footer
        
        # Citire și formatare text
        c.setFillColor(colors.black)
        y = height - 60
        with open(txt_file, 'r', encoding='utf-8') as f:
            lines = f.readlines()
            for line in lines:
                # Elimină diacriticele din linie
                line = remove_diacritics(line.strip())
                if line:  # doar dacă linia nu e goală
                    # Verifică lungimea liniei și ajustează
                    if len(line) > 80:  # limitează la 80 caractere pe linie
                        words = line.split()
                        current_line = ""
                        for word in words:
                            if len(current_line + word) > 80:
                                c.drawString(50, y, current_line)
                                y -= 15
                                current_line = word + " "
                            else:
                                current_line += word + " "
                        if current_line:
                            c.drawString(50, y, current_line)
                            y -= 15
                    else:
                        c.drawString(50, y, line)
                        y -= 15
                    
                    # Verifică dacă mai e loc pe pagină
                    if y < 50:
                        c.showPage()
                        c.setFont("Helvetica", 12)
                        c.setFillColor(colors.red)
                        c.drawString(50, height - 30, header_clean.upper())
                        c.drawString(50, 30, footer_clean.upper())
                        c.line(50, height - 40, width - 50, height - 40)
                        c.line(50, 40, width - 50, 40)
                        c.setFillColor(colors.black)
                        y = height - 60
        
        c.save()

def main():
    root = tk.Tk()
    root.withdraw()  # Ascunde fereastra principală
    
    # Dialog pentru header
    header = tk.simpledialog.askstring("Header", "Introdu textul pentru header (ex: SECRET, TOP SECRET):",
                                     parent=root)
    if not header:
        header = "CONFIDENTIAL"
    
    # Dialog pentru footer
    footer = tk.simpledialog.askstring("Footer", "Introdu textul pentru footer:",
                                     parent=root)
    if not footer:
        footer = "COMPANY USE ONLY"
    
    # Selectare fișiere
    files = filedialog.askopenfilenames(
        title="Selectează fișierele text",
        filetypes=[("Text files", "*.txt")]
    )
    
    if files:
        try:
            create_pdf(files, header, footer)
            messagebox.showinfo("Succes", "Fișierele au fost convertite în PDF cu succes!")
        except Exception as e:
            messagebox.showerror("Eroare", f"A apărut o eroare: {str(e)}")
    
    root.destroy()

if __name__ == "__main__":
    main()
