PythonでPDFにバーコードまたはQRコードを追加する

PDFにバーコードを追加することは、特にPDFファイルの自動処理、追跡、または検索が必要な場合、一般的な要件です。機械可読識別子として、PDFのバーコードは、文書の一意識別子、バージョン番号、日付などの様々なタイプの情報を含むことができます。ここでは、Pythonを使用してPDFにバーコードやQRコードを追加する方法についての記事です。
* [PythonでPDFにバーコードを追加する](#pythonでpdfにバーコードを追加する)
* [PythonでPDFにQRコードを追加する]()

## Pythonライブラリのインストール
* [**Spire.PDF for Python**](https://www.e-iceblue.com/Introduce/pdf-for-python.html)： PDFファイルに直接バーコードを描画するために使用します。Codabar、Code11、Code32、Code39、Code93などの様々な一次元バーコードタイプをサポート。
* [**Spire.Barcode for Python**](https://www.e-iceblue.com/Introduce/barcode-for-python.html)： 上記のライブラリは一次元バーコードの直接作成のみをサポートしているため、PDFに二次元コードを追加する必要がある場合は、バーコードライブラリと組み合わせて使用する必要があります。

これら2つのPythonライブラリは、以下のpipコマンドを使ってインストールできる：
>pip install Spire.Pdf
pip install Spire.Barcode


## PythonでPDFにバーコードを追加する
Spire.PDF for Pythonライブラリは、異なる1次元バーコードタイプを表現するための異なるクラスを提供します。この例では、一般的なCodabarとCode39バーコードをPDFに描画するためにライブラリを使用する方法を示します。

**主なステップ:**
1.	新しい PDF 文書を作成し、ページを追加する；
2.	PDFページにテキストを描画する
3.	**`PdfCodabarBarcode`** オブジェクトを作成し、その **`Draw()`** メソッドを使用して **`Codabar`** バーコードをページ上の指定された位置に描画します。
4.	**`PdfCode39Barcode`** オブジェクトを作成し、その **`Draw()`** メソッドを使用して Code39 バーコードをページ上の指定された位置に描画します。
5.	PDFファイルを保存します。

**Pythonのコード：**
```python
from spire.pdf.common import *
from spire.pdf import *

# PDF文書の作成
pdf = PdfDocument()
# ページを追加する
page = pdf.Pages.Add(PdfPageSize.A4())

y = 20.0
# ページにテキストを描く
font = PdfTrueTypeFont("Arial", 12.0, PdfFontStyle.Bold, True)
text = PdfTextWidget()
text.Font = font
text.Text = "Codabar:"
result = text.Draw(page, 0.0, y)
page = result.Page
y = result.Bounds.Bottom + 2

# PdfCodabarBarcodeオブジェクトを作成し、Codabarをページに描画する。
Codabar = PdfCodabarBarcode("00:12-3456/7890")
Codabar.BarcodeToTextGapHeight = 1.0
Codabar.EnableCheckDigit = True
Codabar.ShowCheckDigit = True
Codabar.TextDisplayLocation = TextLocation.Bottom
Codabar.TextColor = PdfRGBColor(Color.get_Green())
Codabar.Draw(page, PointF(0.0, y))
y = Codabar.Bounds.Bottom + 8

# ページにテキストを描く
text.Text = "Code39:"
result = text.Draw(page, 0.0, y)
page = result.Page
y = result.Bounds.Bottom + 2

# PdfCode39Barcodeオブジェクトを作成し、Code39バーコードをページに描画する
Code39 = PdfCode39Barcode("ABC-012689")
Code39.BarcodeToTextGapHeight = 1.0
Code39.TextDisplayLocation = TextLocation.Bottom
Code39.TextColor = PdfRGBColor(Color.get_Green())
Code39.Draw(page, PointF(0.0, y))

# ドキュメントを保存する
pdf.SaveToFile("AddBarcodes.pdf")
pdf.Close()
```

**生成されたバーコード：**
![PDFBarcode.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/0864245b-889d-fb81-87af-c5080fa385e6.png)



## PythonでPDFにQRコードを追加する
この例では、Spire.Barcode for Pythonライブラリを使用してQRコード画像を生成し、Spire.PDF for Pythonライブラリを使用してPDFページにQRコード画像を描画する必要があります。

**主なステップ:**
1.	Pythonのバーコードライブラリを使ってQRコード画像を生成します；
•	**`BarcodeSettings`** オブジェクトを作成し、**`Type`** プロパティでバーコードタイプをQRCodeに設定する。
•	QRコードのデータ、幅、エラー訂正レベル、テキストを表示するかどうかを設定する。
•	上記の設定に基づいて **`BarCodeGenerator`** オブジェクトを作成し、その**`GenerateImage()`** メソッドを使用してQRコード画像を生成します。
2.	生成されたQRコード画像をPNG画像として保存します；
3.	Python PDFライブラリを使用して、QRコード画像をPDFに描画します；
•	PDFドキュメントを作成し、ページを追加する
•	QRコード画像を読み込み、**`DrawImage()`** メソッドを使用して、PDFページ上の指定された位置にQRコードを描画します。
4.	PDF文書を保存します。

**Pythonのコード：**
```python
from spire.pdf.common import *
from spire.pdf import *
from spire.barcode import *

# BarcodeSettingsオブジェクトの作成
settings = BarcodeSettings()

# バーコードタイプをQRCodeに設定する
settings.Type = BarCodeType.QRCode
# バーコードデータ、幅、エラー訂正レベルなどを設定します。
settings.Data = "ABCD12345"
settings.Data2D = "ABCD12345"
settings.X = 2
settings.QRCodeECL = QRCodeECL.M
settings.ShowTextOnBottom = True

# QRコード画像の生成
barCodeGenerator = BarCodeGenerator(settings)
QRimage = barCodeGenerator.GenerateImage()

# QRコード画像をPNGファイルとして保存
with open("QRCode.png", "wb") as file:
    file.write(QRimage)

# PDF文書の作成
pdf = PdfDocument()
# ページを追加する
page = pdf.Pages.Add()

# QRコード画像をPDFページに描画する
pdfImage = PdfImage.FromFile("QRCode.png")
page.Canvas.DrawImage(pdfImage, 0.0, 20.0)

# ドキュメントを保存する
pdf.SaveToFile("AddQRcode.pdf")
pdf.Close()
```

**生成されたQRコード：**
![PDFQRcode.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/910baedf-827b-6ec1-56bb-29d06007d09a.png)

* * *

:pushpin: 生成されたドキュメントの警告メッセージについては、クリックして1ヶ月の無料トライアルライセンスをリクエストすることができます。

https://www.e-iceblue.com/TemLicense.html