#python #user-interface #pdf #tkinter
Вопрос:
Как я могу изменить свой код, чтобы я мог сохранить свой окончательный pdf-файл (MergedFiles.pdf) с именем, выбранным пользователем, и в выбранном им месте. Я хотел бы иметь всплывающее окно(может быть, tkinter?) это даст пользователю возможность выбрать имя и местоположение для сохранения файла pdf.
import PyPDF2
# Open the files that have to be merged one by one
pdf1File = open(filepath, 'rb')
pdf2File = open('Summary_output.pdf', 'rb')
# Read the files that you have opened
pdf1Reader = PyPDF2.PdfFileReader(pdf1File)
pdf2Reader = PyPDF2.PdfFileReader(pdf2File)
# Create a new PdfFileWriter object which represents a blank PDF document
pdfWriter = PyPDF2.PdfFileWriter()
# Loop through all the pagenumbers for the first document
for pageNum in range(pdf1Reader.numPages):
pageObj = pdf1Reader.getPage(pageNum)
pdfWriter.addPage(pageObj)
# Loop through all the pagenumbers for the second document
for pageNum in range(pdf2Reader.numPages):
pageObj = pdf2Reader.getPage(pageNum)
pdfWriter.addPage(pageObj)
# Now that you have copied all the pages in both the documents, write them into the a new document
pdfOutputFile = open('MergedFiles.pdf', 'wb')
pdfWriter.write(pdfOutputFile)
# Close all the files - Created as well as opened
pdfOutputFile.close()
pdf1File.close()
pdf2File.close()
Ответ №1:
Вы можете сделать это с помощью tkinter filedialog
.
root = tk.Tk()
root.withdraw()
pdfPath = filedialog.asksaveasfilename(defaultextension = "*.pdf", filetypes = (("PDF Files", "*.pdf"),))
if pdfPath: #If the user didn't close the dialog window
pdfOutputFile = open(pdfPath, 'wb')
pdfWriter.write(pdfOutputFile)
pdfOutputFile.close()
pdf1File.close()
pdf2File.close()
Во-первых, он создает и скрывает окно tkinter. Если вы этого не сделаете, при запуске диалогового окна файла появится пустое окно. Затем он использует filedialog.asksaveasfilename
для запуска диалогового окна файла собственной операционной системы. Я указал, что он должен запрашивать только PDF-файлы. Затем оператор if проверяет, был ли возвращен путь, если он был возвращен, он выполняет тот же процесс, что и раньше.
Комментарии:
1. Идеальный. Большое вам спасибо!