I'm trying to make a PDF translator, but in the course of my code, this error appeared:
Traceback (most recent call last): File "c:\Users\Geovane\Desktop\TranslatePDF\translate_pdf.py", line 71, in translate_pdf translated_page.drawText(10, 10, translated_page_text) AttributeError: 'PageObject' object has no attribute 'drawText'
I don't know what else to do.
Here is my code:
import sys
import PyPDF2
from time import sleep
from PySide6 import QtWidgets
from googletrans import Translator
class MainWindow(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("PDF Translator")
self.resize(400, 200)
self.select_pdf_button = QtWidgets.QPushButton("Selecionar PDF")
self.select_pdf_button.clicked.connect(self.select_pdf)
self.languages_combo = QtWidgets.QComboBox()
self.languages_combo.addItem("Inglês", "en")
self.languages_combo.addItem("Português", "pt")
self.languages_combo.addItem("Espanhol", "es")
self.translate_button = QtWidgets.QPushButton("Traduzir")
self.translate_button.clicked.connect(self.translate_pdf)
self.translate_button.setEnabled(False)
self.progress_bar = QtWidgets.QProgressBar()
self.progress_bar.setRange(0, 100)
self.progress_bar.hide()
# Criar o layout
layout = QtWidgets.QVBoxLayout(self)
layout.addWidget(self.select_pdf_button)
layout.addWidget(self.languages_combo)
layout.addWidget(self.translate_button)
layout.addWidget(self.progress_bar)
self.pdf_path = ""
def select_pdf(self):
file_dialog = QtWidgets.QFileDialog()
file_dialog.setNameFilter("PDF (*.pdf)")
if file_dialog.exec_():
self.pdf_path = file_dialog.selectedFiles()[0]
self.translate_button.setEnabled(True)
def translate_pdf(self):
dest_language, ok_pressed = QtWidgets.QInputDialog.getItem(
window,
"Selecionar idioma",
"Idioma destino:",
["pt", "en", "es"],
0,
False
)
if ok_pressed:
translator = Translator()
with open(self.pdf_path, 'rb') as pdf_file:
pdf_reader = PyPDF2.PdfReader(pdf_file)
pdf_writer = PyPDF2.PdfWriter()
for page_num in range(len(pdf_reader.pages)):
page = pdf_reader.pages[page_num]
page_text = page.extract_text()
translated_page_text = translator.translate(page_text, dest=dest_language).text
translated_page = PyPDF2.PageObject.create_blank_page(pdf_writer, width=page.mediabox.width, height=page.mediabox.height)
translated_page.merge_page(page)
translated_page.drawText(10, 10, translated_page_text)
pdf_writer.addPage(translated_page)
new_file_path, _ = QtWidgets.QFileDialog.getSaveFileName(window, "Salvar PDF", "", "PDF (*.pdf)")
if new_file_path:
with open(new_file_path, 'wb') as new_file:
pdf_writer.write(new_file)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
I'm typing this just to populate this field