Python 在PDF中新增條形碼、二維碼

E-iceblue發表於2024-09-03

在PDF中新增條碼是一個常見需求,特別是在需要自動化處理、跟蹤或檢索PDF檔案時。作為一種機器可讀的識別符號,PDF中的條碼可以包含各種型別的資訊,如文件的唯一標識、版本號、日期等。以下是一篇關於如何使用Python在PDF中新增條形碼或二維碼的文章。

所需Python庫

Spire.PDF for Python 庫:用於在PDF檔案中直接繪製條形碼,支援多種一維條碼型別,如 Codabar, Code11, Code32, Code39, Code93等。
由於Spire.PDF for Python只支援建立一維條碼,如果需要在PDF中新增二維碼,我們還需要結合Spire.Barcode for Python庫。

這兩個Python庫可以透過下面的pip 命令進行安裝:

pip install Spire.Pdf
pip install Spire.Barcode

Python 在PDF 文件中新增條形碼

Spire.PDF for Python庫提供了不同的類來代表不同的一維條碼型別,該示例將演示如何使用該庫在PDF中繪製常見的Codabar和Code39條碼。

主要步驟:

  1. 新建PDF文件並新增頁面;
  2. 在PDF頁面上繪製文字;
  3. 建立 PdfCodabarBarcode 物件,然後使用其 Draw() 方法將Codabar條碼繪製到頁面指定位置
  4. 建立 PdfCode39Barcode 物件,然後使用其 Draw() 方法將Code39條碼繪製到頁面指定位置
  5. 儲存PDF檔案。


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文件
pdf.SaveToFile("PDF中新增條形碼.pdf")
pdf.Close()

Python 在PDF文件中新增二維碼

該示例中我們需要先借助Spire.Barcode for Python庫來生成二維碼圖片,然後再使用Spire.PDF for Python庫將二維碼圖片繪製到PDF頁面上。

主要步驟:

  1. 建立 BarcodeSettings 物件,然後使用其 Type 屬性將條碼型別設定為二維碼QRCode
  2. 設定二維碼的資料、寬度、糾錯級別、以及是否顯示文字等
  3. 基於以上設定建立 BarCodeGenerator 物件,然後使用其 GenerateImage() 方法生成二維碼圖片
  4. 將生成的二維碼圖片儲存為PNG圖片;
  5. 建立PDF文件,並新增一頁
  6. 載入二維碼圖片,然後使用 DrawImage() 方法將二維碼繪製到PDF頁面指定位置處
  7. 儲存PDF文件。

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

# 生成二維碼圖片
barCodeGenerator = BarCodeGenerator(settings)
QRimage = barCodeGenerator.GenerateImage()

# 將二維碼圖片儲存為PNG檔案
with open("QRCode.png", "wb") as file:
    file.write(QRimage)

# 建立PDF文件
pdf = PdfDocument()
# 新增頁面
page = pdf.Pages.Add()

# 將二維碼圖片繪製到PDF頁面上
pdfImage = PdfImage.FromFile("QRCode.png")
page.Canvas.DrawImage(pdfImage, 0.0, 20.0)

# 儲存PDF文件
pdf.SaveToFile("Pdf中新增二維碼.pdf")
pdf.Close()

Spire.Barcode for Python庫支援幾十種一維和二維條碼型別,因此對於其他Spire.PDF for Python庫不支援的一維條形碼,我們也可以參考示例二提供的方法結合使用這兩個庫,先生成指定條碼圖片,再繪製到PDF頁面上。

* 對於生成文件中的警告資訊,可以點選自行申請一個月免費授權試用:

https://www.e-iceblue.cn/misc/temporary-license.html

相關文章