1. はじめに
前回の記事の「英語学習のため、自作のExcel英単語・英例文リストから英日音声ファイルを生成してみた」では、英単語帳のExcelファイルから音声付きの語彙学習素材を作成し、ウォークマンなどのデバイスで再生できるようにしました。しかし、ただ音声を聞くだけでは学習効果があまり感じられませんでした。そこで今回は、文章を見ながら音声を聞けるようにするため、英語学習用に作成した単語リストをKindleなどの電子書籍端末でも読みやすいPDFに変換してみた、というのが今回の記事の内容です。
2. 実施環境
CPU: CORE i5 8th Gen
メモリ: 8GB
OS: Windows 11 22H2
3. 出力イメージ
A6縦レイアウトで1ページに5語ずつぐらいづつ配置。
各語は以下の構成になります。
1️⃣ 英単語 → 2️⃣ 日本語訳 → 3️⃣ 日本語例文 → 4️⃣ 英語例文
例:
achieve
達成する
彼女は何年もの努力の末に目標を達成した。
She achieved her goal after years of hard work.
4. 手順
ステップ1:必要なライブラリのインストール
py -m pip install pandas openpyxl reportlab
ステップ2:Pythonプログラム
以下が作成したプログラムです、英単語帳のExcelファイルである"入力のエクセル.xlsx"(これは例です)を読み込んで、"words.pdf"としてPDFを出力するようにしています。
from reportlab.lib.pagesizes import A6
from reportlab.lib.units import mm
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, KeepTogether
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
import pandas as pd
# ✅ 日本語フォント(Windowsの場合)
pdfmetrics.registerFont(TTFont('Gothic', r'C:\Windows\Fonts\msgothic.ttc'))
# ✅ Excel読み込み(1行目スキップ)
df = pd.read_excel("入力のエクセル.xlsx", header=None, skiprows=1)
# ✅ スタイル定義
styles = getSampleStyleSheet()
style_normal = ParagraphStyle(
'NormalJP',
parent=styles['Normal'],
fontName='Gothic',
fontSize=9,
leading=12,
)
style_word = ParagraphStyle(
'WordJP',
parent=styles['Normal'],
fontName='Gothic',
fontSize=11,
leading=14,
spaceAfter=4,
)
style_pos = ParagraphStyle(
'POSJP',
parent=styles['Normal'],
fontName='Gothic',
fontSize=9,
textColor='gray',
spaceAfter=3,
)
# ✅ PDF設定
pdf = SimpleDocTemplate(
"words.pdf",
pagesize=A6,
rightMargin=5 * mm,
leftMargin=5 * mm,
topMargin=5 * mm,
bottomMargin=5 * mm,
)
content = []
# ✅ 各単語ブロックを構築
for _, row in df.iterrows():
word = str(row[0]) if not pd.isna(row[0]) else ""
pos = str(row[1]) if not pd.isna(row[1]) else ""
meaning = str(row[2]) if not pd.isna(row[2]) else ""
example_en = str(row[3]) if not pd.isna(row[3]) else ""
example_jp = str(row[4]) if not pd.isna(row[4]) else ""
block = [
Paragraph(f"<b>{word}</b>", style_word),
Paragraph(pos, style_pos),
Paragraph(meaning, style_normal),
Spacer(1, 3),
Paragraph(example_en, style_normal),
Paragraph(example_jp, style_normal),
Spacer(1, 10),
]
content.append(KeepTogether(block))
# ✅ PDF出力
pdf.build(content)
ステップ3:実行
python excel_to_pdf.py
実行後、同じフォルダにwords.pdfが出力されます。
ステップ4: Kindleなどの電子書籍端末でよむ
Kindle端末をUSB接続して、documents フォルダにPDFをコピー
Kindleなどの電子書籍端末で開くと、A6縦で1ページ5語ずつ見ることができました。
その他:プログラム カスタマイズ例
- 1ページ1語にしたい:WORDS_PER_PAGE = 1
- 余白を広くしたい:rightMargin などを増やす
- フォントを変更したい:register_fonts() 内を編集
- A4サイズで出力したい:pagesize=A6 → pagesize=A4
5. まとめ
このプログラムを使うことで、英単語帳のExcelファイルからKindleなどの電子書籍端末でも読みやすいPDFを作成し、音声を聞きながら英単語を見て学習できるようになりました。
ただし、前回の記事、英語学習のため、自作のExcel英単語・英例文リストから英日音声ファイルを生成してみた」で作成した音声ファイルは、
1️⃣ 英単語
2️⃣ 日本語訳
3️⃣ 日本語例文
4️⃣ 英語例文
の4種類をそれぞれ個別の音声ファイルとして出力していたため、ファイル数が非常に多くなってしまいました。その結果、ウォークマンに保存できるファイル数の上限を超えてしまうという問題が発生しましたので、次回はこれらの音声ファイルを一つに統合する方法について取り組んでいきたいと思います。