PDF(Portable Document Format)は、クロスプラットフォーム互換性、忠実性、セキュリティ、双方向性を備えた、一般的に使用されている文書フォーマットです。私たちの日常業務における契約書、報告書、論文などは、異なるオペレーティング・システム(Windows、Mac、Linuxなど)やデバイスで閲覧しても一貫した外観を維持できるように、通常PDF形式になっています。
Pythonは効率的でシンプルなプログラミング言語です。Pythonを使ってPDF文書を扱うことで、オフィスの自動化を実現し、作業効率を向上させることができます。今回は、Pythonを使ってPDF文書を作成し、画像を挿入する方法を紹介します。
Pythonライブラリのインストール
この記事では、Spire.PDF for Pythonライブラリを使用します。このサードパーティのPythonライブラリは完全に独立しており、PythonアプリケーションでPDFを作成、読み込み、編集、変換、保存することができます。
pipコマンド:
pip install Spire.PDF
Spire.PDF for Pythonパッケージをダウンロードして、ローカルパスから手動でインストールすることもできます。
Python - PDFドキュメントの生成と画像の挿入
Spire.PDF for Pythonは、PDF文書へのテキスト、画像、図形、リンク、フォームフィールドの追加をサポートしています。以下は、テキストと画像を含む単純なPDF文書を作成する方法の例です:
-
PdfDocument
オブジェクトを作成します。 -
PdfDocument.Pages.Add()
メソッドを使用して、指定したサイズと余白のページを追加します。 - ブラシやフォントを作成し、テキストの配置を設定します。
-
PdfPageBase.Canvas.DrawString()
メソッドを使用して、ページ上の指定した座標に文字列を描画します。 - 文書内容を含む TXT ファイルを読み込み、それを保持する PdfTextWidget オブジェクトを作成します。(
PdfTextWidget
クラスは、複数ページにまたがるテキストエリアを表します) -
PdfTextWidget.Draw()
メソッドを使用して、ページ上の指定された位置にドキュメントコンテンツを描画します。 - 画像を読み込んでサイズを指定し、
PdfPageBase.Canvas.DrawImage()
メソッドを使用してページ上の指定した位置に画像を描画します。 -
PdfDocument.SaveToFile()
メソッドを使用して結果ドキュメントを保存します。
Pythonのコード:
from spire.pdf.common import *
from spire.pdf import *
def ReadFromTxt(fname: str) -> str:
with open(fname, 'r', encoding='utf-8') as f:
text = f.read()
return text
# PDFドキュメントの作成
pdf = PdfDocument()
# ページを追加する
page = pdf.Pages.Add(PdfPageSize.A4(), PdfMargins(20.0, 20.0))
# タイトルテキストを指定する
titleText = "クラゲってどんな生きもの?"
# ベタ塗りブラシの作成
titleBrush = PdfSolidBrush(PdfRGBColor(Color.get_MediumBlue()))
paraBrush = PdfSolidBrush(PdfRGBColor(Color.get_Black()))
# トゥルータイプフォントの作成
titleFont = PdfTrueTypeFont("Yu Mincho", 15.0, PdfFontStyle.Bold, True)
paraFont = PdfTrueTypeFont("Yu Mincho", 11.0, PdfFontStyle.Regular, True)
# テキスト配置の設定
textAlignment = PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle)
# ページの中央にタイトルを描く
page.Canvas.DrawString(titleText, titleFont, titleBrush, page.Canvas.ClientSize.Width / 2, 35.0, textAlignment)
# TXTファイルから文書の内容を取得する
paraText = ReadFromTxt("content.txt")
# ドキュメントの内容を保持するPdfTextWidgetオブジェクトを作成する
textWidget = PdfTextWidget(paraText, paraFont, paraBrush)
# 文書の内容を描画する矩形領域を指定する
rect = RectangleF(PointF(0.0, 52.0), page.Canvas.ClientSize)
# PdfLayoutType を Paginate に設定して、コンテンツの自動ページングを有効にします
textLayout = PdfTextLayout()
textLayout.Layout = PdfLayoutType.Paginate
# 文書の内容をページに描く
textWidget.Draw(page, rect, textLayout)
# 画像を読み込む
image = PdfImage.FromFile("jellyfish.png")
# 画像サイズの指定
width = image.Width * 0.75
height = image.Height * 0.75
# ページ上の指定した位置に画像を描画します
x = (page.Canvas.ClientSize.Width - width) / 2
y = 280.0
page.Canvas.DrawImage(image, x, y, width, height)
# 結果ファイルの保存
pdf.SaveToFile("GeneratePDF.pdf")
ウォーターマークを削除するための無料トライアルライセンスをリクエストする。