【Python】Tkinterとimg2pdfで画像をPDFに変換するアプリの作り方
はじめに
Pythonはスクリプト言語であり、CSVからPDFへの変換、PDFからDOCへの変換など、さまざまなファイルコンバーターを手軽に作成できます。適切なライブラリを組み合わせれば、画像をPDFに変換するデスクトップアプリケーションも簡単に開発できます。
本記事では、画像のバイナリデータを解析してPDFへ変換するimg2pdfモジュールを使用します。これにGUI構築用のTkinterを組み合わせることで、画像を選択してPDFに変換できる直感的なアプリが完成します。
アプリ作成の手順
以下の手順に沿って進めていきます。
- システムにimg2pdfがインストールされていることを確認します。ターミナルで
pip install img2pdfを実行してパッケージを導入し、スクリプト内でimg2pdfをインポートします。 - filedialogをインポートし、ユーザーがディレクトリ内の複数の画像を選択できるダイアログボックスを表示できるようにします。
from tkinter import *と記述して、Tkinterライブラリをインポートします。- Tkinterでアプリの基本構造を作成します。ファイルダイアログを開くためのButtonウィジェットや、メッセージを表示するLabelウィジェットなどを配置します。
- ユーザーに複数の画像を選択させるダイアログボックスを開く関数を定義します。
- ファイルをバイナリモードで開き、convertメソッドを使ってPDFに変換・保存する関数を定義します。
サンプルコード
# 必要なライブラリをインポート
from tkinter import *
from tkinter import filedialog
from tkinter import ttk
import img2pdf
# tkinterフレームのインスタンスを作成
win = Tk()
# ウィンドウサイズとタイトルを設定
win.geometry('750x250')
win.title("Image to PDF")
# ファイル選択ダイアログを開く関数
def select_file():
global images
images = filedialog.askopenfilenames(initialdir="", title="Select Images")
Label(win, text=images).pack()
# 画像をPDFに変換する関数
def image_to_pdf():
for image in images:
with open(f"{image}.pdf", "wb") as file:
file.write(img2pdf.convert(images))
Label(frame, text=file).pack()
# ラベルとボタンを配置
Label(win, text="Image to PDF Convertor", font="Caveat 25 bold").pack(pady=30)
ttk.Button(win, text="Select Images", command=select_file).pack(ipadx=10)
frame = Frame(win)
frame.pack()
ttk.Button(frame, text="Convert and Save", command=image_to_pdf).pack(side=LEFT, pady=20, ipadx=10)
win.mainloop()
実行結果
上記のコードを実行すると、画像をPDFファイルに変換するためのアプリケーションウィンドウが表示されます。
ウィンドウ上の「Select Images」ボタンからローカルディレクトリ内の画像ファイルを選択し、「Convert and Save」ボタンをクリックすると、選択した画像がPDFに変換されて保存されます。
補足ポイント
- img2pdfはJPEGやPNGなどの画像データを再エンコードせずにPDFへ埋め込めるため、画質を劣化させずに変換できます。
filedialog.askopenfilenames()は複数ファイルの同時選択に対応しているため、まとめて変換したい場合にも便利です。- 生成されるPDFのファイル名は、元の画像ファイル名に「.pdf」が付いた形になります。必要に応じて保存先やファイル名の処理をカスタマイズしてください。
-
メールをPDFに変換する方法【iPhone・Android・Mac・Windows対応】
大事なメールを後から見返せるように保存しておきたいなら、PDF(Portable Document Format)へ変換するのが最適な方法の一つです。PDFにしておけば、受信トレイの中だけでなく、iPhone、iPad、Android、Mac、Windowsなど、さまざまなデバイスやプラットフォームで自由に閲覧・管理できるようになります。 世の中には数多くのPDF変換アプリが存在しますが、本記事ではサードパーティ製アプリを使わずに、標準機能だけでメールをPDF化する方法をご紹介します。 各デバイスごとの具体的な手順をわかりやすく解説していくので、ぜひ参考にしてください! iPhone / iP
-
LinuxのpdftocairoでPDFを画像に変換・フラット化する方法
手元にあるPDFドキュメントの編集や黒塗り(リダクション)が必要になった場面を想像してみてください。一部の情報を追記したり、別の情報を隠蔽したりしたいこともあるでしょう。こうした作業はさまざまなPDFソフトで行えます。しかし多くの場合、新たな変更は元の文書の上にレイヤーとして重ねられるため、専門知識を持つ人であれば、黒塗りマーカーの下からデータを読み取れてしまうのです。以前、PDFファイルを「フラット化」する方法を紹介するチュートリアルを公開しました。これはすべての変更を単一のレイヤーにまとめることを意味します。今回はもうひとつのテクニックとして、PDFファイルを画像に変換する方法をご紹介しま