-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpdf2txt.py
60 lines (50 loc) · 2.23 KB
/
pdf2txt.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import os
import pdfplumber
import fpdf
class Conversor:
def __init__(self, origem, destino):
self.origem = origem
self.destino = destino
def converter_pdf_para_txt(self):
pdf_files = self._obter_arquivos(self.origem, '.pdf')
for pdf_file in pdf_files:
with pdfplumber.open(os.path.join(self.origem, pdf_file)) as pdf:
text = '\nNEWPAGE\n\n'.join(page.extract_text() for page in pdf.pages)
txt_file = pdf_file.replace('.pdf', '.txt')
self._salvar_arquivo(os.path.join(self.destino, txt_file), text.strip())
def converter_txt_para_pdf(self):
txt_files = self._obter_arquivos(self.origem, '.txt')
for txt_file in txt_files:
with open(os.path.join(self.origem, txt_file), 'r', encoding='utf-8', errors='ignore') as infile:
text = infile.read()
pdf_file = txt_file.replace('.txt', '.pdf')
pdf = fpdf.FPDF()
pdf.add_page()
pdf.set_font("Arial", size=12)
pdf.multi_cell(190, 10, txt=text, align='L')
pdf.output(os.path.join(self.destino, pdf_file))
def _obter_arquivos(self, diretorio, extensao):
return [f for f in os.listdir(diretorio) if f.endswith(extensao)]
def _salvar_arquivo(self, filepath, content):
with open(filepath, 'w', encoding='utf-8', errors='ignore') as outfile:
outfile.write(content)
if __name__ == '__main__':
escolha = input("Quer converter PDF para TXT ou TXT para PDF? (digite 'PDF' ou 'TXT') ")
origem = input("Qual é o diretório de origem? ")
destino = input("Qual é o diretório de destino? ")
if not os.path.isdir(origem):
print(f"O diretório de origem '{origem}' não existe.")
exit()
if not os.path.isdir(destino):
print(f"O diretório de destino '{destino}' não existe.")
exit()
conversor = None
if escolha.upper() == 'PDF':
conversor = Conversor(origem, destino)
conversor.converter_pdf_para_txt()
elif escolha.upper() == 'TXT':
conversor = Conversor(origem, destino)
conversor.converter_txt_para_pdf()
else:
print("Escolha inválida. Por favor, digite 'PDF' ou 'TXT'.")
exit()