0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonでPDF文書を生成する

Posted at

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文書を作成する方法の例です:

  1. PdfDocument オブジェクトを作成します。
  2. PdfDocument.Pages.Add() メソッドを使用して、指定したサイズと余白のページを追加します。
  3. ブラシやフォントを作成し、テキストの配置を設定します。
  4. PdfPageBase.Canvas.DrawString() メソッドを使用して、ページ上の指定した座標に文字列を描画します。
  5. 文書内容を含む TXT ファイルを読み込み、それを保持する PdfTextWidget オブジェクトを作成します。(PdfTextWidget クラスは、複数ページにまたがるテキストエリアを表します)
  6. PdfTextWidget.Draw() メソッドを使用して、ページ上の指定された位置にドキュメントコンテンツを描画します。
  7. 画像を読み込んでサイズを指定し、PdfPageBase.Canvas.DrawImage() メソッドを使用してページ上の指定した位置に画像を描画します。
  8. 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")

生成されたPDFファイル:
GeneratePdfDocument.png


:point_right: ウォーターマークを削除するための無料トライアルライセンスをリクエストする。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?