涛哥聊Python | borb,一个好用的 Python 库,处理 PDF 文件好帮手!

本文来源公众号“涛哥聊Python”,仅用于学术分享,侵权删,干货满满。

原文链接:borb,一个好用的 Python 库!

大家好,今天为大家分享一个好用的 Python 库 - borb。

Github地址:https://github.com/jorisschellekens/borb

Python Borb 是一个用于处理 PDF 文件的 Python 库,它提供了丰富的功能和工具,使得 PDF 文件的创建、修改和解析变得更加简单和高效。本文将深入探讨 Borb 库的核心特性、用法和示例代码,以便大家能够更好地了解和利用这个强大的库。

1 什么是 Python Borb?

Python Borb 是一个开源的 Python 库,旨在帮助用户处理 PDF 文件。它提供了各种功能和工具,包括创建 PDF 文件、添加页面、插入文本、绘制图形、修改现有 PDF 文件等。Borb 库的设计理念是简单、灵活和易于使用,同时又提供了丰富的功能和扩展性,使得用户可以轻松地实现各种 PDF 文件处理任务。

2 安装 Borb

要开始使用 Borb,首先需要安装它。

可以通过 pip 来安装 Borb:

pip install borb

安装完成后,就可以开始使用 Borb 库了。

3 创建 PDF 文件

在 Borb 中,可以通过创建 PDF 对象来表示一个 PDF 文件。可以向 PDF 对象添加页面、插入文本、绘制图形等内容。

下面是一个简单的示例:

from borb.pdf.document import Document
from borb.pdf.page.page import Page
from borb.pdf.page.page_size import PageSize
from borb.pdf.canvas.layout.page_layout.single_column_layout import SingleColumnLayout
from borb.pdf.canvas.layout.page_layout.two_column_layout import TwoColumnLayout
from borb.pdf.canvas.layout.text.paragraph import Paragraph
from borb.pdf.canvas.layout.text.span import Span# Create a new document
document = Document()# Add a new page
page = Page(PageSize.A4)
document.append_page(page)# Add content to the page
page_content = SingleColumnLayout()
page_content.add(Paragraph(Span("Hello, World!")))
page_content.add(Paragraph(Span("This is a PDF created with Borb.")))
page_content.add(Paragraph(Span("Welcome to the world of PDF generation with Python!")))
page.set_page_layout(page_content)# Save the document to a file
document.save("example.pdf")

在这个示例中,创建了一个新的 PDF 文档,并向其添加了一个页面和一些文本内容。最后,将文档保存到一个名为 example.pdf 的文件中。

4 修改现有 PDF 文件

除了创建新的 PDF 文件外,Borb 还允许用户修改现有的 PDF 文件。可以打开一个现有的 PDF 文件,然后添加、删除或修改其中的内容。

下面是一个示例:

from borb.pdf.reader import SimplePDFReader
from borb.pdf.document import Document
from borb.pdf.writer import Writer# Open an existing PDF file
with open("existing.pdf", "rb") as file:reader = SimplePDFReader(file)document = reader.read()# Modify the document
# ...# Save the modified document to a new file
with open("modified.pdf", "wb") as file:writer = Writer(file)writer.write(document)

在这个示例中,打开了一个名为 existing.pdf 的现有 PDF 文件,并对其进行了修改。然后,将修改后的文档保存到一个名为 modified.pdf 的新文件中。

5 添加页面元素和样式

在创建或修改 PDF 文件时,Borb 提供了丰富的页面元素和样式选项,使得用户可以创建具有各种格式和布局的内容。

下面是一个示例,演示了如何添加不同样式的文本和图形元素:

from borb.pdf.canvas.geometry.rectangle import Rectangle
from borb.pdf.canvas.layout.image.image import Image
from borb.pdf.canvas.layout.page_layout.single_column_layout import SingleColumnLayout
from borb.pdf.canvas.layout.page_layout.two_column_layout import TwoColumnLayout
from borb.pdf.canvas.layout.text.paragraph import Paragraph
from borb.pdf.canvas.layout.text.span import Span
from borb.pdf.page.page import Page
from borb.pdf.page.page_size import PageSize
from borb.pdf.document import Document
from borb.pdf.canvas.layout.table.table import Table
from borb.pdf.canvas.layout.table.table_cell import TableCell
from borb.pdf.canvas.layout.table.table_row import TableRow
from borb.pdf.canvas.layout.table.table_style import TableStyle# Create a new document
document = Document()# Add a new page
page = Page(PageSize.A4)
document.append_page(page)# Add content to the page
page_content = SingleColumnLayout()# Add a title
title = Paragraph(Span("Sample PDF with Borb", font_size=18, is_bold=True))
page_content.add(title)# Add an image
image = Image("image.png", width=300, height=200)
page_content.add(image)# Add a paragraph
paragraph = Paragraph()
paragraph.add(Span("This is a paragraph with ", font_size=12))
paragraph.add(Span("different styles", font_size=12, is_italic=True, color=(0.2, 0.5, 0.8)))
paragraph.add(Span(" of text.", font_size=12))
page_content.add(paragraph)# Add a table
table_data = [["Name", "Age", "Country"],["John", "30", "USA"],["Emma", "25", "Canada"]
]
table = Table(table_data, style=TableStyle(border_width=1))
page_content.add(table)# Set page layout
page.set_page_layout(page_content)# Save the document to a file
document.save("sample.pdf")

在这个示例中,创建了一个包含标题、图像、段落和表格的 PDF 页面,并设置了它们的样式和布局。

6 处理 PDF 表单

除了创建和修改普通的 PDF 文件外,Borb 还支持处理 PDF 表单。可以通过 Borb 来填充 PDF 表单、提取表单数据等。

下面是一个示例,演示了如何填充 PDF 表单:

from borb.pdf.document import Document
from borb.pdf.page.page import Page
from borb.pdf.page.page_size import PageSize
from borb.pdf.canvas.layout.page_layout.single_column_layout import SingleColumnLayout
from borb.pdf.canvas.layout.text.paragraph import Paragraph
from borb.pdf.canvas.layout.text.span import Span
from borb.pdf.font import Standard14Font
from borb.pdf.pdf import PDF
from borb.pdf.pdf_page import PDFPage
from borb.pdf.xobject.form import FormXObject
from borb.pdf.xobject.image.image import ImageXObject
from borb.toolkit.export.to_pdf_form import ToPDFForm# Open an existing PDF form
with open("form_template.pdf", "rb") as file:pdf = PDF()pdf.read(file)# Fill the form with data
pdf_form = ToPDFForm(pdf)
pdf_form["name"] = "John Doe"
pdf_form["age"] = "30"
pdf_form["country"] = "USA"# Save the filled form to a new file
with open("filled_form.pdf", "wb") as file:pdf.write(file)

在这个示例中,打开了一个包含表单字段的 PDF 模板文件,并填充了表单字段的值。然后,将填充后的表单保存到一个新文件中。

7 总结

在本文中,深入探讨了 Python Borb 库的核心特性和用法,包括创建 PDF 文件、修改现有 PDF 文件等,并提供了丰富的示例代码。进一步探索了 Python Borb 库的功能和用法,包括添加页面元素和样式、处理 PDF 表单等,并提供了丰富的示例代码。希望本文能够帮助大家更全面地了解和利用 Borb 库,从而实现各种 PDF 文件处理任务。

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

THE END!

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

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

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

相关文章

Java初探:从入门到上手应用,一路向前的全面指南!

Java初探:从入门到上手应用,一路向前的全面指南! 引言 欢迎来到这篇关于Java编程语言的博客!Java是一门广泛应用于软件开发领域的高级编程语言,其设计初衷是为了实现一次编写,到处运行的目标。本文将带领你…

Willem, Chtholly and Seniorious(珂朵莉树)

小时候听说过珂朵莉树的大名,奈何当时没有专业知识看不懂。最近正好想起来了,来补上这个遗憾。 珂朵莉树(Chtholly Tree)又叫老司机树(ODT,Old Driver Tree)。多年前,一位用户 Old …

ArcEngine开发arcToolbox中视域分析

(1)简介 (2)文档参考 Viewshed_sa <in_raster> <in_observer_features> <out_raster> {z_factor} {FLAT_EARTH | CURVED_EARTH} {refractivity_coefficient} ParameterExplanationData Type<in_raster>Input raster. Composite Geodataset<in…

通俗易懂的L0范数和L1范数及其Python实现

定义 L0 范数&#xff08;L0-Norm&#xff09; L0 范数并不是真正意义上的一个范数&#xff0c;因为它不满足范数的三角不等式性质&#xff0c;但它在数学优化和信号处理等领域有着实际的应用。L0 范数指的是向量中非零元素的个数。它通常用来度量向量的稀疏性。数学上表示为…

Leetcode 3043. Find the Length of the Longest Common Prefix

Leetcode 3043. Find the Length of the Longest Common Prefix 1. 解题思路2. 代码实现 题目链接&#xff1a;3043. Find the Length of the Longest Common Prefix 1. 解题思路 这一题其实暴力求解也问题不大&#xff0c;只要把一个数列当中所有数字所能构成的prefix全部记…

升级项目.Net Framework版本遇到错误

报错信息 Microsoft.Common.CurrentVersion.targets(1229, 5): [MSB3644] 找不到 .NETFramework,Versionv4.5,ProfileClient 的引用程序集。要解决此问题&#xff0c;请为此框架版本安装开发人员工具包(SDK/目标包)或者重新定向应用程序。可在 https://aka.ms/msbuild/develope…

【C语言】通讯录(静态版本+动态版本)思路解析+完整源代码

通讯录 由于代码比较长&#xff0c;为了增加可读性&#xff0c;分成了contact.h&#xff0c;contact.c&#xff0c;test.c&#xff0c;分别用来声明函数或者类型&#xff0c;实现函数功能&#xff0c;测试代码 contact.h 我们希望通讯录具有增加联系人&#xff0c;删除联系人…

2024年 前端JavaScript入门到精通 第一天 笔记

主要讲解JavaScript核心知识&#xff0c;包含最新ES6语法&#xff0c;从基础到API再到高级。让你一边学习一边练习&#xff0c;重点知识及时实践&#xff0c;同时每天安排大量作业&#xff0c;加深记忆&#xff0c;巩固学习成果。 1.1 基本软件与准备工作 1.2 JavaScript 案例 …

standalone安装部署

standalone是spark的资源调度服务&#xff1b;作用和yarn是一样的&#xff1b;standlone运行时的服务&#xff1a; master服务&#xff1b;主服务&#xff1b;管理整个资源调度&#xff1b;资源的申请需要通过master进行分配&#xff1b;类似于yarn里的ResourceManager;&#x…

v63.函数

1.初见函数 代码中有部分非常单纯/重复&#xff0c;可以将它取出来&#xff0c;制作成函数&#xff0c;而且可以反复调用。 代码复制是程序质量不良的表现。 可以使用函数优化代码&#xff0c;可以反复调用。 2.函数的定义和使用 函数整体由函数头&#xff0b;函数体组成函数…

【HarmonyOS】鸿蒙开发之prompt组件——第3.3章

prompt组件简介 prompt组件一共有三种弹出框: showToast&#xff08;&#xff09;showDialog&#xff08;&#xff09;showActionMenu&#xff08;&#xff09; 一.显示一个Toast showToast函数内参数说明如下: message&#xff1a;提示文本&#xff0c;必填项。 duratio…

沁恒CH32V30X学习笔记10---pwm输出

PWM输出 PWM 输出模式 PWM 输出模式是定时器的基本功能之一。PWM 输出模式最常见的是使用重装值确定 PWM 频率,使用捕获比较寄存器确定占空比的方法。将 OCxM 域中置 110b 或者 111b 使用 PWM 模式 1 或者模式 2,置 OCxPE 位使能预装载寄存器,最后置 ARPE 位使能预装载寄存…

动态DP入门线性动态DP

动态DP入门&线性动态DP 前言核心思想例1例22024牛客寒假4K2022牛客寒假2J结论 前言 OI-WiKi上有一个动态DP讲解&#xff0c;直接讲到了树型DP领域&#xff0c;同时需要树链剖分&#xff0c;门槛有点高。本文针对线性DP做一个动态DP的讲解。 首先当然要懂得一定的DP的相关…

【qt创建线程两种方式】

QT使用线程的两种方式 1.案例进度条 案例解析&#xff1a; 如图由组件一个进度条和三个按钮组成&#xff0c;当点击开始的时候进度条由0%到100%&#xff0c;点击暂停&#xff0c;进度条保持之前进度&#xff0c;再次点击暂停变为继续&#xff0c;点击停止按钮进度条停止。 案…

从可靠性的角度理解 tcp

可靠性是 tcp 最大的特点。常见的用户层协议&#xff0c;比如 http, ftp, ssh, telnet 均是使用的 tcp 协议。可靠性&#xff0c;即从用户的角度来看是可靠的&#xff0c;只要用户调用系统调用返回成功之后&#xff0c;tcp 协议栈保证将报文发送到对端。引起不可靠的表现主要有…

【大模型 知识图谱】ChatKBQA:KBQA知识图谱问答 + 大模型

ChatKBQA&#xff1a;KBQA知识图谱问答 大模型 提出背景传统方法处理流程ChatKBQA处理流程对比优势 总结ChatKBQA框架概览特征1&#xff1a;逻辑形式生成特征2&#xff1a;无监督实体和关系检索特征3&#xff1a;参数高效的微调特征4&#xff1a;GQoT 可解释的查询执行特征5&a…

《ShardingSphere JDBC?Sharding JDBC?》基本小白脱坑问题

因为在短链接中的很多操作也需要依靠sharding JDBC来完成所以同时也在短链接的文章中。 在网上看了很多文章&#xff0c;可能是因为技术的迭代等等原因&#xff0c;看的越多蒙的越快。在学习的道路上梳理一下&#xff0c;希望可以帮助到别的小伙伴。 官网地址&#xff1a; A…

git stash 正确用法

目录 一、背景 二、使用 2.1 使用之前&#xff0c;先简单了解下 git stash 干了什么&#xff1a; 2.2 git stash 相关命令 2.3 使用流程 1. 执行 git stash 2. 查看刚才保存的工作进度 git stash list 3. 这时候在看分支已经是干净无修改的(改动都有暂存到 stash) 4. 现在…

Fusion OS

1 VMware workstation搭建华为FusionCompute实验环境 VMware workstation搭建华为FusionCompute实验环境&#xff08;三&#xff09;保姆级安装教程&#xff0c;可运行虚拟机-CSDN博客 在VMware Workstation以及云服务器上安装华为FusionCompute_vm安装华为存储模拟软件-CSDN…

C# ICloneable的特点及其用法

在C#中&#xff0c;ICloneable 是一个接口&#xff0c;用于定义允许一个对象创建自身的精确副本&#xff0c;即“克隆”的能力。ICloneable 接口只包含了一个方法&#xff1a;Clone&#xff0c;该方法在实现时应该返回当前对象的一个副本。 这里是 ICloneable 接口的定义&…