CyberChaos(さいばかおす)

プログラミング言語、トランスパイラ、RPA、ChatGPT、データマイニング、リバースエンジニアリングのための忘備録

PDFコンバーターアプリをPythonで作ってみた

2023-05-07 10:37:08 | python
PDF Converter App

任意のファイルを読み込んでPDF化して保存するアプリをTKinterライブラリーを用いたPythonコードで書いて

以下は、Tkinterライブラリを使用して、ユーザーが選択したファイルを読み込み、PDF形式で保存するPythonアプリケーションの例です。

python
Copy code
import tkinter as tk
from tkinter import filedialog
import os
from fpdf import FPDF


class PDFConverter:
def __init__(self, master):
self.master = master
master.title("PDF Converter")

# ラベル
self.label = tk.Label(master, text="PDFに変換するファイルを選択してください。")
self.label.pack()

# ファイル選択ボタン
self.select_button = tk.Button(master, text="ファイルを選択", command=self.select_file)
self.select_button.pack()

# 変換ボタン
self.convert_button = tk.Button(master, text="変換", state=tk.DISABLED, command=self.convert_file)
self.convert_button.pack()

# メッセージラベル
self.message = tk.Label(master, text="")
self.message.pack()

def select_file(self):
# ファイル選択ダイアログを表示
file_path = filedialog.askopenfilename()

if file_path:
# 選択されたファイルがPDFでなければ変換ボタンを有効化
if os.path.splitext(file_path)[1] != ".pdf":
self.convert_button.config(state=tk.NORMAL)
else:
self.message.config(text="選択されたファイルは既にPDF形式です。")
else:
self.message.config(text="ファイルが選択されていません。")

# 選択されたファイルのパスを保存
self.file_path = file_path

def convert_file(self):
# PDFファイルの作成
pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size=12)
with open(self.file_path, "rb") as f:
text = f.read()
pdf.cell(200, 10, txt=text.decode("utf-8"), ln=1)
pdf_path = os.path.splitext(self.file_path)[0] + ".pdf"
pdf.output(pdf_path)

self.message.config(text=f"変換が完了しました。PDFファイルを{pdf_path}に保存しました。")


root = tk.Tk()
app = PDFConverter(root)
root.mainloop()
このアプリは、ユーザーがファイルを選択した後、ファイルがPDF形式でない場合は変換ボタンを有効化します。変換ボタンをクリックすると、選択されたファイルがPDFに変換され、元のファイルと同じ場所に保存されます。






…失敗したようだ。
Pydroidでやるとダメなのかどうかは知らんが。
ファイルを選択して読み込ませるところで何にも起きなくなり、Openボタンを押しても変換ボタンを押しても反応しなかった。

PCで実行しても同じ結果となった。
ちなみにPythonのIDLEではFPDFライブラリーのインストールに失敗したので、Anacondaのプロンプトでpip install --upgrade FPDFとコマンドを入力してようやくインストールできた。スパイダーで実行しても動かなかった。

BingAlではちょっと違うソースコードを提示されたが、やはり動かなかった。



最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。