PythonでPDFにバーコードとQRコードを作成する方法

バーコードやQRコードの統合は、物理的な資料とデジタル情報を結びつけるためにますます重要になっています。Pythonを使ってPDF内にバーコードやQRコードを作成することで、効率的なデータ管理と検索が可能になり、ドキュメントのセキュリティやインタラクティブ性が向上します。これにより、URL、商品詳細、またはユニークな識別子をエンコードし、スマートフォンや専用リーダーで簡単にスキャンして解読できるようになります。本記事では、**Pythonコードを使用してPDFドキュメントにバーコードとQRコードを作成する方法**を紹介します。

- **[PythonでPDFドキュメントにバーコードを作成](#pythonでpdfドキュメントにバーコードを作成)**
- **[PythonでPDFドキュメントにQRコードを作成](#pythonでpdfドキュメントにqrコードを作成)**

本記事で使用する方法は、[Spire.PDF for Python](https://jp.e-iceblue.com/download/spire-pdf-for-python.html)が必要で、PyPIからインストール可能です：`pip install Spire.PDF`。

[無料ライセンスを申請](https://www.e-iceblue.com/TemLicense.html)

## PythonでPDFドキュメントにバーコードを作成
このライブラリでは、`PdfCodabarBarcode`、`PdfCode11Barcode`、`PdfCode32Barcode`、`PdfCode39Barcode`、および`PdfCode93Barcode`クラスを使用して、さまざまな種類のバーコードを作成できます。その後、これらのクラスの`Draw()`メソッドを使用して、PDFページにバーコードを描画します。詳細な手順は以下の通りです：
1. 必要なモジュールをインポートします。
2. PDFドキュメントを作成するために`PdfDocument`オブジェクトを作成し、ページ設定を行います。
3. `PdfDocument.Pages.Add()`メソッドを使用してドキュメントにページを追加します。
4. `PdfCodabarBarcode`や`PdfCode93ExtendedBarcode`など、指定されたタイプのバーコードオブジェクトを作成します。
5. バーコードのプロパティを設定します。
6. `Draw()`メソッドを使用して、PDFページにバーコードを描画します。
7. `PdfDocument.SaveToFile()`メソッドを使ってドキュメントを保存します。
8. リソースを解放します。

**コード例**
```python
from spire.pdf import *

# 新しいPDFドキュメントを作成
pdf = PdfDocument()

# ページサイズ、方向、余白を設定
pdf.PageSettings.Size = PdfPageSize.A4()
pdf.PageSettings.Orientation = PdfPageOrientation.Landscape
pdf.PageSettings.Margins.All = 50

# ドキュメントに新しいページを追加
page = pdf.Pages.Add()

# フォント、ブラシ、テキストフォーマットを作成
font = PdfTrueTypeFont("Yu Gothic UI", 14.0, PdfFontStyle.Bold, True)
brush = PdfBrushes.get_Black()
textFormat = PdfStringFormat(PdfTextAlignment.Left)

# ページにテキストを描画
textSize = font.MeasureString("コーダバーコード")
rect1 = RectangleF.FromLTRB(50, 160, textSize.Width + 50, textSize.Height + 160)
page.Canvas.DrawString("コーダバーコード", font, brush, rect1, textFormat)

# Codabarバーコードを作成
codabar = PdfCodabarBarcode("1-98765-43210-0")
# バーコードのプロパティを設定
codabar.BarcodeToTextGapHeight = 2.0
codabar.EnableCheckDigit = True
codabar.ShowCheckDigit = True
codabar.TextDisplayLocation = TextLocation.Bottom
# ページにバーコードを描画
codabar.Draw(page, RectangleF.FromLTRB(50, textSize.Height + 170, 300, textSize.Height + 270))

# ページにテキストを描画
textSize = font.MeasureString("Code 93 Extendedバーコード")
rect2 = RectangleF.FromLTRB(pdf.PageSettings.Size.Width / 2 + 50, 160, textSize.Width + 50, textSize.Height + 160)
page.Canvas.DrawString("Code 93 Extendedバーコード", font, brush, rect2, textFormat)

# Code 93 Extendedバーコードを作成
code93Extended = PdfCode93ExtendedBarcode("*Aa*Zz*")
# バーコードのプロパティを設定
code93Extended.BarcodeToTextGapHeight = 2.0
code93Extended.EnableCheckDigit = True
code93Extended.ShowCheckDigit = True
code93Extended.TextDisplayLocation = TextLocation.Bottom
# ページにバーコードを描画
code93Extended.Draw(page, RectangleF.FromLTRB(pdf.PageSettings.Size.Width / 2 + 50, textSize.Height + 170, pdf.PageSettings.Size.Width / 2 + 300, textSize.Height + 270))

# ドキュメントを保存
pdf.SaveToFile("output/PDFバーコード.pdf")
pdf.Close()
```

結果
![PythonでPDFドキュメントにバーコードを作成](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/e5050d4e-159c-64d7-1a7c-c6708a5f85e4.png)

## PythonでPDFドキュメントにQRコードを作成
PDFドキュメントにQRコードを作成するには、もう一つのライブラリ[Spire.Barcode for Python]()が必要です（PyPI：`pip install Spire.Barcode`）。`BarcodeSettings`オブジェクトを作成してQRコードの設定を行い、`BarcodeGenerator.GenerateImage()`メソッドを使ってQRコードの画像をバイトデータとして生成します。QRコード画像を生成したら、`PdfPageBase.Canvas.DrawImage()`メソッドを使用してPDFページにQRコードを描画します。詳細な手順は以下の通りです：
1. 必要なモジュールをインポートします。
2. `PdfDocument`オブジェクトを作成し、ページ設定を行います。
3. `PdfDocument.Pages.Add()`メソッドを使ってドキュメントにページを追加します。
4. `BarcodeSettings`オブジェクトを作成し、`BarcodeSettings.Type`プロパティでQRコードの種類を設定します。
5. `BarcodeSettings.Data`および`BarcodeSettings.Data2`プロパティを通じてコードの内容を設定します。
6. QRコードの他の設定を行います。
7. `BarCodeGenerator`オブジェクトを作成し、`BarCodeGenerator.GenerateImage()`メソッドでQRコードの画像をバイトデータとして生成します。
8. バイトデータを使用してStreamオブジェクトを作成します。
9. そのStreamを`PdfImage.FromStream()`メソッドで`PdfImage`オブジェクトに読み込みます。
10. `PdfPageBase.Canvas.DrawImage()`メソッドを使用して、ページにQRコード画像を描画します。
11. `PdfDocument.SaveToFile()`メソッドを使ってドキュメントを保存します。
12. リソースを解放します。

**コード例**
```python
from spire.barcode import BarcodeSettings, BarCodeType, QRCodeECL, BarCodeGenerator
from spire.pdf import *

# 新しいPDFドキュメントを作成
pdf = PdfDocument()

# ページサイズ、方向、余白を設定
pdf.PageSettings.Size = PdfPageSize.A4()
pdf.PageSettings.Orientation = PdfPageOrientation.Portrait
pdf.PageSettings.Margins.All = 50

# ドキュメントに新しいページを追加
page = pdf.Pages.Add()

# BarcodeSettingsオブジェクトを作成
codeSettings = BarcodeSettings()
# コードタイプをQRコードに設定
codeSettings.Type = BarCodeType.QRCode
# QRコードの内容を設定
codeSettings.Data = "Hello, World!"
codeSettings.Data2D = "Hello, World!"
# エラー訂正レベルを設定
codeSettings.QRCodeECL = QRCodeECL.L
# QRコードのテキスト表示位置を設定
codeSettings.ShowTextOnBottom = True
# QRコードの幅を設定
codeSettings.X = 3
# BarCodeGeneratorオブジェクトを作成してバーコード画像を生成
barcodeGenerator = BarCodeGenerator(codeSettings)
codeImage = barcodeGenerator.GenerateImage()

# 画像データを使用してStreamオブジェクトを作成
codeStream = Stream(codeImage)

# ページにテキストを描画
font = PdfTrueTypeFont("Yu Gothic UI", 14.0, PdfFontStyle.Bold, True)
textSize = font.MeasureString("QRコード")
rect = RectangleF.FromLTRB(50, 50, 50 + textSize.Width, 50 + textSize.Height)
brush = PdfBrushes.get_Black()
stringFormat = PdfStringFormat(PdfTextAlignment.Left)
page.Canvas.DrawString("QRコード", font, brush, rect, stringFormat)

# QRコード画像ストリームをPdfImageオブジェクトにロード
image = PdfImage.FromStream(codeStream)

# ページにQRコード画像を描画
page.Canvas.DrawImage(image, PointF(50.0, 50.0 + textSize.Height + 10.0))

# ドキュメントを保存
pdf.SaveToFile("output/PDFQRコード.pdf")
pdf.Close()
```

結果
![PythonでPDFドキュメントにQRコードを作成](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/3d5761eb-1f62-9072-9bf2-8b2d5712440e.png)

本記事では、Pythonを使ってPDFドキュメントにバーコードとQRコードを作成する方法を紹介しました。

さらにPDFドキュメント処理に関するスキルについては、[Spire.PDF for Pythonのチュートリアル](https://www.e-iceblue.com/Tutorials/Python/Spire.PDF-for-Python/Program-Guide/Spire.PDF-for-Python-Program-Guide-Content.html)をご覧ください。