前提・実現したいこと
実現したいことは、pythonのtkinterを使ってpdfをページごとに分割する仕組みを作りたいです。
動きとしては「参照ボタン」を押してテキストボックスにpdfのフルパスを取得。←ここまでは完了
そのパスを使って対象となるpdfの分割をしたいです。
最後に保存する先を指定するダイアログを出して分割ファイルを保存したいです。
いろんなサイトからコピーをしてやっているのですが、上手くいきません。
コードの中で完結する、ディレクトリ名、ファイル名を指定した分割はできました。
まだ勉強時間が不足しているため、1つ1つの言葉やエラーの意味を理解して使っておりません。
良い案がある方、書き方にはこだわっておりませんので、お手数ですがご教授お願い致します。
発生している問題・エラーメッセージ
Exception in Tkinter callback Traceback (most recent call last): File "C:\Users\user1\Anaconda3\lib\tkinter\__init__.py", line 1705, in __call__ return self.func(*args) TypeError: pdf_split() missing 2 required positional arguments: 'p_file' and 'p_folder'
該当のソースコード
python
1##テキストボックス(ここに参照で取得したフルパスを入れる) 2split_txt = tkinter.Entry(width=58, justify="left") 3split_txt.place(x=85, y=210) 4 5##参照ボタンの動作 6def ask_file(): 7 fTyp = [("", "*")] 8 pdf_dir = filedialog.askopenfilename( 9 filetypes=fTyp) 10 split_txt.insert(0, pdf_dir) 11 12##メインの動作(PDF分割) 13def pdf_split(p_file, p_folder): 14 p_path = split_txt.get() 15 pdf_dir, pdf_file = os.path.split(p_path) 16 17 file = PdfFileReader(open(p_file + '.pdf', 'rb')) 18 for page_num in range(file.numPages): 19 page = file.getPage(page_num) 20 file_output = PdfFileWriter() 21 file_output.addPage(page) 22 with open(p_folder + '\' + p_file + '_split_' + str(page_num) + '.pdf', 'wb') as f: 23 file_output.write(f) 24 pdf_split(pdf_file, pdf_dir) 25 26 # メッセージボックス 27 messagebox.showinfo("完了", "完了しました。") 28 29##参照ボタン 30btn = tkinter.Button( 31 root, text='参照', command=ask_file) 32btn.place(x=450, y=210) 33 34##実行ボタン(pdf_splitの呼び出し) 35btn = tkinter.Button( 36 root, text='実行', command=pdf_split, width=10) 37btn.place(x=210, y=400) 38 39======================= 40##以下は単体で動かせていた時点のソースコードです 41 # 指定のフォルダへ指定のPDFファイルを分割する 42 from pathlib import Path 43 import PyPDF2 44 from PyPDF2 import PdfFileReader 45 from PyPDF2 import PdfFileWriter 46 47 pdf_file = "pdfファイル名" 48 pdf_dir = "./pdf_files" 49 50 # PDFファイルをページごとに分割して保存 51 52 53 def pdf_split(p_file, p_folder): 54 file = PdfFileReader(open(p_file + '.pdf', 'rb')) 55 for page_num in range(file.numPages): 56 page = file.getPage(page_num) 57 file_output = PdfFileWriter() 58 file_output.addPage(page) 59 with open(p_folder + '\' + p_file + '_split_' + str(page_num) + '.pdf', 'wb') as f: 60 file_output.write(f) 61 62 63 # 保存 64 pdf_split(pdf_file, pdf_dir) 65======================= 66
試したこと
理解をしてやっていることは特にありません。
補足情報(FW/ツールのバージョンなど)
pythonのバージョンは3.7.6でvscodeのバージョンは1.52.0を使用してます。
回答1件
あなたの回答
tips
プレビュー