pdfテキストを指定したフォントでjpg内に記入するpythonコード
同じフォルダー内のPDFファイルからテキストを抽出し、そのテキストを同じフォルダー内のJPG画像に追加するPythonコードの例です。このコードはPyMuPDF
(PDFからテキストを抽出するため)とPillow
(画像にテキストを追加するため)を使用します。
Contents
必要なライブラリをインストール
pip install PyMuPDF Pillow
コード
import fitz # PyMuPDF
from PIL import Image, ImageDraw, ImageFont
import os
def extract_text_from_pdf(pdf_path):
doc = fitz.open(pdf_path)
text = ''
for page in doc:
text += page.get_text()
doc.close()
return text
def add_text_to_image(image_path, text):
image = Image.open(image_path)
draw = ImageDraw.Draw(image)
font = ImageFont.load_default()
# テキストを追加する位置とその他の設定
text_position = (10, 10)
text_color = (255, 255, 255) # 白色
draw.text(text_position, text, font=font, fill=text_color)
image.save(image_path)
def main():
folder_path = '.' # 現在のフォルダーを指定
for file_name in os.listdir(folder_path):
if file_name.endswith('.pdf'):
pdf_path = os.path.join(folder_path, file_name)
text = extract_text_from_pdf(pdf_path)
for img_name in os.listdir(folder_path):
if img_name.endswith('.jpg'):
image_path = os.path.join(folder_path, img_name)
add_text_to_image(image_path, text)
print(f'Text added to {image_path}')
if __name__ == "__main__":
main()
extract_text_from_pdf
関数でPDFからテキストを抽出します。add_text_to_image
関数でJPG画像にテキストを追加します。main
関数でフォルダー内のPDFファイルを検索し、それらからテキストを抽出し、すべてのJPG画像にそのテキストを追加します。
コードの中のtext_position
やtext_color
などの設定は、お好みに合わせて調整してください。
カスタマイズ:指定したフォントファイルを使い日本語テキスト表示、文字サイズを3倍、新しい名前でjpgを作成するようにした修正したコード
IPAフォントのダウンロード
IPAフォントの公式サイトからIPAPGothic
フォントをダウンロードします。具体的には、IPA Pゴシック
またはIPA ゴシック
をダウンロードします。
https://moji.or.jp/ipafont/ipa00303/
フォントファイルの配置
ダウンロードしたZIPファイルを解凍し、ipag.ttf
ファイルをスクリプトがあるディレクトリに配置します。(同じフォルダー内に格納する)
コード
import fitz # PyMuPDF
from PIL import Image, ImageDraw, ImageFont
import os
def extract_text_from_pdf(pdf_path):
doc = fitz.open(pdf_path)
text = ''
for page in doc:
text += page.get_text()
doc.close()
return text
def add_text_to_image(image_path, text, font_path):
image = Image.open(image_path)
draw = ImageDraw.Draw(image)
# フォントの設定
font_size = 48 # フォントサイズを指定(適宜調整)
font = ImageFont.truetype(font_path, font_size)
# テキストの設定
text_position = (10, 10)
text_color = (255, 255, 255) # 白色
# テキストを追加
draw.text(text_position, text, font=font, fill=text_color)
# 新しい画像の名前を設定
new_image_path = image_path.replace('.jpg', '_with_text.jpg')
image.save(new_image_path)
print(f'Text added to {new_image_path}')
def main():
folder_path = '.' # 現在のフォルダーを指定
font_path = os.path.join(folder_path, 'ipag.ttf') # フォントファイルのパスを指定
for file_name in os.listdir(folder_path):
if file_name.endswith('.pdf'):
pdf_path = os.path.join(folder_path, file_name)
text = extract_text_from_pdf(pdf_path)
for img_name in os.listdir(folder_path):
if img_name.endswith('.jpg'):
image_path = os.path.join(folder_path, img_name)
add_text_to_image(image_path, text, font_path)
if __name__ == "__main__":
main()
- フォントファイルの指定:
ImageFont.truetype
を使用して、指定したipag.ttf
フォントファイルを読み込みます。 - フォントサイズ:
font_size
を48に設定し、文字サイズを3倍にしました(デフォルトサイズを16と仮定した場合)。 - 新しい画像ファイル名:テキストを追加した後、新しい画像ファイル名に
_with_text
を追加して保存します。
カスタマイズ:文字の色を蛍光のピンク色で上から120px下から文字の記入をスタート
import fitz # PyMuPDF
from PIL import Image, ImageDraw, ImageFont
import os
def extract_text_from_pdf(pdf_path):
doc = fitz.open(pdf_path)
text = ''
for page in doc:
text += page.get_text()
doc.close()
return text
def add_text_to_image(image_path, text, font_path):
image = Image.open(image_path)
draw = ImageDraw.Draw(image)
# フォントの設定
font_size = 48 # フォントサイズを指定(適宜調整)
font = ImageFont.truetype(font_path, font_size)
# テキストの設定
text_color = (255, 20, 147) # 蛍光ピンク色
top_margin = 120
image_width, image_height = image.size
text_position = (10, top_margin)
# テキストを追加
draw.text(text_position, text, font=font, fill=text_color)
# 新しい画像の名前を設定
new_image_path = image_path.replace('.jpg', '_with_text.jpg')
image.save(new_image_path)
print(f'Text added to {new_image_path}')
def main():
folder_path = '.' # 現在のフォルダーを指定
font_path = os.path.join(folder_path, 'ipag.ttf') # フォントファイルのパスを指定
for file_name in os.listdir(folder_path):
if file_name.endswith('.pdf'):
pdf_path = os.path.join(folder_path, file_name)
text = extract_text_from_pdf(pdf_path)
for img_name in os.listdir(folder_path):
if img_name.endswith('.jpg'):
image_path = os.path.join(folder_path, img_name)
add_text_to_image(image_path, text, font_path)
if __name__ == "__main__":
main()
テキストの色:text_color
を蛍光ピンクに設定しました(RGB値 (255, 20, 147)
)。
テキストの位置:画像の上端から120pxの位置にテキストが表示されるようにtop_margin
を設定しました。文字の位置は (10, top_margin)
で指定しています。
ディスカッション
コメント一覧
まだ、コメントがありません