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

news/2024/9/20 12:08:41/文章来源:https://www.cnblogs.com/Yesi/p/18394868

在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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/791717.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI图像放大工具,图片放大无所不能

AI图像放大工具,如ESRGAN,对于提高由Stable Diffusion生成的AI图像质量至关重要。它们被广泛使用,以至于许多Stable Diffusion的图形用户界面(GUI)都内置了支持。AI图像放大工具,如ESRGAN,对于提高由Stable Diffusion生成的AI图像质量至关重要。它们被广泛使用,以至于许…

ArcGIS中快捷添加在线地图

ArcGIS中快捷添加在线地图 1、首先打开这个地址:(https://www.geosceneonline.cn/geoscene/webapps/gallery) 2、选择一个需要的地图服务,点击 在ArcMap 中打开 3、此时会下载一个文件。item.pkinfo 4、双击打开该文件,会默认打开ArcMap并创建空白地图,并将天地图作为底…

PART1-Oracle关系数据结构-索引和索引组织表

3. 索引组织表 3.1. 索引概述 索引是与表或表簇关联的可选结构,有时可以加快数据访问速度。通过在表的一个或多个列上创建索引,在某些情况下,您可以从表中检索一小部分随机分布的行。索引是减少磁盘I/O的众多方法之一。 如果堆组织表没有索引,那么数据库必须执行全表扫描才…

南沙信奥塞陈老师解一本通题:1408:素数回文数的个数

【题目描述】求11到n之间(包括n),既是素数又是回文数的整数有多少个。【输入】一个大于11小于1000的整数n。【输出】11到n之间的素数回文数个数。【输入样例】 23 【输出样例】 1 【提示】提示: 回文数指左右对称的数,如:292,333。 #include <bits/stdc++.h> using…

软件工程第一次随笔作业

这个作业属于哪个课程 首页 - 软件工程2024 - 福州大学 - 班级博客 - 博客园 (cnblogs.com)这个作业要求在哪里 2024秋软件工程个人作业(第一次) - 作业 - 软件工程2024 - 班级博客 - 博客园 (cnblogs.com)这个作业的目标 搭建自己的博客,编辑自己的个人情况学号 102202117一…

脑机接口定义及相关概念

1 什么是脑机接口脑机接口(Brain-Computer Interface,简称,BCI)是指一种系统或设备,它通过解码大脑的电生理信号来与外部计算机或设备进行直接的通讯。BCI的目的是在不依赖身体运动的情况下实现大脑与计算机之间的信息交换。2 相关概念 2.1 脑电图(EEG) 最常用的脑机接口技术之…

海外合规|新加坡网络安全认证计划简介(一)

新加坡网络安全局(CSA)为组织制定了网络安全认证计划,旨在表彰具有良好网络安全实践的组织。Cyber Essentials 标志表彰已实施网络卫生措施的组织,而 Cyber Trust 标志则是表彰具有全面网络安全措施和实践的组织的卓越标志。这些标志是可见的指标,表明组织已实施良好的网络…

使用 ZwCreateThreadEx 函数强力注入 Dll

常用的线程注入方法有:远程线程注入、全局消息钩子注入、APC 应用层异步注入 和 ZwCreateThreadEx 强力注入等。 今天我们讲一下ZwCreateThreadEx 强力注入的这种方法。之前的远程线程通过 CreateRemoteThread 函数来进行 Dll 注入,这种方式可以注入普通的进程,但是却无法注…

软件工程第一次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13243这个作业的目标 对软件工程有全面的了解,并且对AIGC和ChatGPT等人工智能技术有深入的认识,可以更灵活地利用AI作为辅助工具。学…

Spring 学习笔记

概述 Spring 是一个企业级 J2EE 应用开发一站式解决方案,其提供的功能贯穿了项目开发的表现层、业务层和持久化层,同时,Spring 可以和其他应用框架无缝整合 Spring 的特性包括以下几个方面:轻量:Spring 是一个轻量级的框架,其核心 JAR 包的大小均为 1MB 左右。从系统的资…

keycloak~Refresh_token阶段不走RequiredAction

Refresh_token是在access_token过期之后,用来换新的access_token的,有了Refresh_token之后,用户可以在很长一段时间不需要重新登录,这对于用户体验是有好处的;RequiredAction是一种登录阶段的必选行为,当一个用户被某个RequiredAction标记之后,用户必须完成RequiredActi…

谁还不知道用ChatmoneyAI写短剧脚本,真能火

本文由 ChatMoney团队出品现在大家打开抖音、小红书,琳琅满目,目光所能及的都是各种吸精剧情的小短剧,虽然这些短剧的制作成本低,但是作为编剧的要写脚本,可不认为这么容易啊......... 接下来我给大家推荐一下使用ChatmoneyAI创作短剧脚本的步骤吧,让你笔下的短剧也能轻轻…