Python 在PDF中添加条形码、二维码

devtools/2024/11/14 6:19:38/

在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 代码:

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中添加条形码

Python 在PDF文档中添加二维码

该示例中我们需要先借助Spire.Barcode for Python库来生成二维码图片,然后再使用Spire.PDF for Python库将二维码图片绘制到PDF页面上。

主要步骤:

  1. 使用Python条码库生成二维码图片;
    • 创建 BarcodeSettings 对象,然后使用其Type属性将条码类型设置为二维码QRCode
    • 设置二维码的数据、宽度、纠错级别、以及是否显示文本等
    • 基于以上设置创建 BarCodeGenerator 对象,然后使用其 GenerateImage() 方法生成二维码图片
  2. 将生成的二维码图片保存为PNG图片;
  3. 使用Python PDF库将二维码图片绘制到PDF中;
    • 创建PDF文档,并添加一页
    • 加载二维码图片,然后使用 DrawImage() 方法将二维码绘制到PDF页面指定位置处
  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# 生成二维码图片
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()

生成二维码:
Python在PDF中添加二维码

Spire.Barcode for Python库支持几十种一维和二维条码类型,因此对于其他Spire.PDF for Python库不支持的一维条形码,我们也可以参考示例二提供的方法结合使用这两个库,先生成指定条码图片,再绘制到PDF页面上。


对于生成文档中的警告信息,可以点击自行申请一个月免费授权试用:https://www.e-iceblue.cn/misc/temporary-license.html


http://www.ppmy.cn/devtools/96740.html

相关文章

【网安第一章】——信息收集

文章目录 域名信息1. whois2.域名反查3. ICP备案查询4.天眼查5. 子域名信息1. 暴力枚举 6. 域名DNS信息CNAME记录MX记录TXT记录哪里可以查这些信息 IP信息1. 域名解析流程2. IP归属3. 如何获取CDN后面的真实IPCDN实现流程1. 超级ping2. 历史DNS3. 通过子域名查询IP4. 通过国外的…

和小米比起来希喂宠物空气净化器怎么样?

有宠物用哪个牌子空气净化机比较好呢?有宠物的家庭除异味、除毛、除菌需求比不养宠的更大,所以有宠物的家庭选空气净化器时一定要着重看这几点。 最近,我发现身边的朋友们都开始重视起家居空气质量,特别是有了宠物之后&#xff0…

宠物主人的智能健康管理指南

如何选择宠物智能听诊器 选择宠物智能听诊器时,宠物主人应考虑以下因素:设备的准确性、用户界面的易用性、数据存储和共享的能力、以及设备的兼容性和可扩展性。此外,宠物主人还应考虑设备的维护成本和客户服务支持。 宠物智能听诊器的维护…

linux进程

exit()函数正常结束进程 man ps aux 是在使用 ps 命令时常用的一个选项组合,用于显示系统中所有进程的详细信息。aux 不是 ps 命令的一个正式选项,而是三个选项的组合:a, u, 和 x。这三个选项分别代表不同的含义&#…

缓存学习

缓存基本概念 概念 对于缓存,最普遍的理解是能让打开某些页面速度更快的工具。从技术角度来看,其本质上是因为缓存是基于内存建立的,而内存的读写速度相比之于硬盘快了xx倍,因此用内存来代替硬盘作为读写的介质当然能大大提高访…

Oracle(62)什么是内存优化表(In-Memory Table)?

内存优化表(In-Memory Table)是指将表的数据存储在内存中,以提高数据访问和查询性能的一种技术。内存优化表通过利用内存的高速访问特性,显著减少I/O操作的延迟,提升数据处理的速度。这种技术在需要高性能数据处理的应…

Redis主从哨兵模式

简介 主从 – 用法 像MySQL一样,redis是支持主从同步的,而且也支持一主多从以及多级从结构。 主从结构,一是为了纯粹的冗余备份,二是为了提升读性能,比如很消耗性能的SORT就可以由从服务器来承担。 redis的主从同步是异…

JavaWeb——MVC架构模式

一、概述: MVC(Model View Controller)是软件工程中的一种 软件架构模式 ,它把软件系统分为模型、视图和控制器三个基本部分。用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户…