21 lines
583 B
Python
21 lines
583 B
Python
import unicodedata
|
|
import re
|
|
|
|
|
|
# Remove caracteres inválidos de nomes de arquivos
|
|
def sanitize_filename(filename: str) -> str:
|
|
# Normaliza Unicode (NFC)
|
|
filename = unicodedata.normalize("NFKD", filename)
|
|
filename = filename.encode("ascii", "ignore").decode("ascii")
|
|
|
|
# Remove caracteres inválidos
|
|
filename = re.sub(r'[<>:"/\\|?*\x00-\x1F]', "", filename)
|
|
|
|
# Substitui espaços múltiplos por um espaço
|
|
filename = re.sub(r"\s+", " ", filename).strip()
|
|
|
|
# Garante extensão
|
|
if "." not in filename:
|
|
filename += ".pdf"
|
|
|
|
return filename
|