Python 在PDF中绘制形状(线条、矩形、椭圆形等)

news2024/11/7 11:11:53

PDF中绘制图形可以增强文档的视觉效果。通过添加不同类型的形状,如实线、虚线、矩形、圆形等,可以使文档更加生动有趣,提高读者的阅读兴趣。这对于制作报告、演示文稿或是教材特别有用。本文将通过以下几个示例介绍如何使用Python PDF中绘制不同的图形。

目录

Python 在PDF中绘制实线、虚线

Python 在PDF中绘制矩形

Python 在 PDF 中绘制椭圆形


所需Python - Spire.PDF for Python。可以通过下面的pip 命令直接安装:

pip install Spire.Pdf

Python 在PDF中绘制实线、虚线

Spire.PDF for Python库提供了 PdfPageBase.Canvas.DrawLine() 方法用于在PDF页面指定位置绘制线条。通过设置画笔PdfPen的样式,可以绘制实线或虚线。

Python 代码:

from spire.pdf.common import *
from spire.pdf import *

# 创建PDF文档
pdf = PdfDocument()

# 添加页面
page = pdf.Pages.Add()

# 保存当前绘图状态
state = page.Canvas.Save()

# 指定线条起始点的X和Y坐标
x = 100.0  
y = 50.0   

# 制定线条长度
width = 300.0  

# 创建指定颜色和粗细的画笔
pen = PdfPen(PdfRGBColor(Color.get_Blue()), 2.0)  

# 用画笔在页面上绘制实线
page.Canvas.DrawLine(pen, x, y, x + width, y)

# 设置画笔样式为虚线
pen.DashStyle = PdfDashStyle.Dash  

# 设置虚线样式为[1, 4, 1]
pen.DashPattern = [1, 4, 1]  

# 指定虚线起始点 y 坐标
y = 80.0  

# 用画笔页面上绘制虚线
page.Canvas.DrawLine(pen, x, y, x + width, y)

# 恢复之前保存的绘图状态
page.Canvas.Restore(state)

# 保存PDF文档
pdf.SaveToFile("绘制线条.pdf")
pdf.Close()
pdf.Dispose()

Python 在PDF中绘制矩形

PdfPageBase.Canvas.DrawRectangle() 方法可用于在PDF页面指定位置绘制矩形。通过向该方法中传递不同的参数,可以指定矩形的大小、填充色等。

Python 代码:

from spire.pdf.common import *
from spire.pdf import *

# 创建PDF文档
pdf = PdfDocument()

# 添加页面
page = pdf.Pages.Add()

# 保存当前绘图状态
state = page.Canvas.Save()

# 创建指定颜色和粗细的画笔
pen = PdfPen(PdfRGBColor(Color.get_Blue()), 1.5)

# 用画笔在页面上绘制一个矩形
page.Canvas.DrawRectangle(pen, RectangleF(PointF(20.0, 60.0), SizeF(150.0, 90.0)))

# 创建一个线性渐变笔刷
linearGradientBrush = PdfLinearGradientBrush(PointF(220.0, 60.0), PointF(350.0, 180.0), PdfRGBColor(Color.get_Green()), PdfRGBColor(Color.get_Pink()))

# 用线性渐变笔刷绘制一个填充式矩形
page.Canvas.DrawRectangle (linearGradientBrush, RectangleF(PointF(220.0, 60.0), SizeF(150.0, 90.0)))

# 恢复之前保存的绘图状态
page.Canvas.Restore(state)

# 保存PDF文档
pdf.SaveToFile("绘制矩形.pdf")
pdf.Close()
pdf.Dispose()

 

Python 在 PDF 中绘制椭圆形

PDF页面指定位置绘制椭圆形可以使用 PdfPageBase.Canvas.DrawEllipse() 方法。通过指定不同的PDF画笔或画刷,可以绘制不同样式的椭圆形。

Python 代码:

from spire.pdf.common import *
from spire.pdf import *

# 创建PDF文档
pdf = PdfDocument()

# 添加页面
page = pdf.Pages.Add()

# 保存当前绘图状态
state = page.Canvas.Save()

# 创建画笔
pen = PdfPens.get_Violet()

# 用画笔在页面上绘制椭圆形
page.Canvas.DrawEllipse(pen, 30.0, 60.0, 150.0, 100.0)

# 创建填充画刷对象
brush = PdfSolidBrush(PdfRGBColor(Color.get_Violet()))

# 绘制填充的椭圆形状
page.Canvas.DrawEllipse(brush, 220.0, 60.0, 150.0, 100.0)

# 恢复之前保存的绘图状态
page.Canvas.Restore(state)

# 保存PDF文档
pdf.SaveToFile("绘制椭圆形.pdf")
pdf.Close()
pdf.Dispose()

 


生成文档中的红色水印,可以通过点击以下链接,申请一个月免费授权来去除:申请免费临时授权文件创建、编辑、转换和打印 Office:Excel (xls,xlsx), Word (doc,docx), PowerPoint, PDF 及 Barcodeicon-default.png?t=O83Ahttps://www.e-iceblue.cn/misc/temporary-license.html

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

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

相关文章

三菱MR-J4伺服绝对位置检测系统

发生[AL.25 绝对位置丢失]或[AL.E3 绝对位置计数器警告]时,必须再次进行原点设定。否则可能会因此发生预料之外的动作。 概要 常规运行时,编码器由检测1转内位置的编码器和检测转数的旋转累计计数器构成。 绝对位置检测系统与伺服系统控制器电源…

程序员行业会因此受到什么冲击?

床铺再次当选,会对两家关系产生深远影响。在此篇博客中,我们将探讨床铺的政策对我们外贸、就业、留学以及特别是互联网产业和我们程序员职业的潜在影响。 关系趋紧:摩擦可能会更多 床铺在其任期期间对我们施加了诸多贸易税,采取…

Edge浏览器打开PDF无法显示电子签章

Edge浏览器打开PDF无法显示电子签章 直接说处理方式 直接说处理方式 浏览器地址栏,输入 edge://flags/搜索:pdf禁用:New PDF Viewer效果如下

02- 模块化编程-006 ADC0808数码显示对比

1、ADC0808 芯片介绍 ADC0808是一款集成的CMOS设备,包含8位模拟至数字转换器、8通道多路复用器和与微处理器兼容的控制逻辑。8位A/D转换器采用逐次逼近作为转换技术。转换器特点包括高阻抗斩波稳定比较器、256R电压分压器、模拟开关树和逐次逼近寄存器。8通道多路复…

计算机体系结构之多级缓存、缓存miss及缓存hit(二)

前面章节《计算机体系结构之缓存机制原理及其应用(一)》讲了关于缓存机制的原理及其应用,其中提出了多级缓存、缓存miss以及缓存hit的疑问。故,本章将进行展开讲解, 多级缓存、缓存miss以及缓存hit存在的意义是为了保持…

scala set训练

Set实训内容: 1.创建一个可变Set,用于存储图书馆中的书籍信息(假设书籍信息用字符串表示),初始化为包含几本你喜欢的书籍 2.添加两本新的书籍到图书馆集合中,使用操作符 3.删除一本图书馆集合中的书籍&…

linux驱动-i2c子系统框架学习(1)

可以将整个 I2C 子系统用下面的框图来描述: 可以将上面这一 I2C 子系统划分为三个层次,分别为用户空间、内核空间和硬件层,内核空间就包括 I2C 设备驱动层、I2C 核心层和 I2C 适配器驱动层, 本篇主要内容就是介绍 I2C 子系统框架中…

鸿蒙系统崛起:开发者如何把握机遇、应对挑战并打造卓越应用体验?

在当今科技发展的浪潮中,鸿蒙系统(HarmonyOS)如一颗璀璨之星,正以迅猛之势崛起。随着其持续发展,鸿蒙系统在全球操作系统市场中已然崭露头角,呈现出与安卓(Android)和iOS分庭抗礼的态…

Scala入门基础(17)Set集

Set的定义Set的代码结构不可变与可变Set的区别Set常见操作 一.Set的定义 Set:集合 Set的特点:唯一(元素不相同) 二.Set的代码结构 val 变量名 Set[类型](元素1,元素2...) (演示&#xff09…

基于单片机的燃气报警阀门系统

本设计基于单片机的燃气报警阀门系统,燃气报警阀门系统采用STM32主控制器为核心芯片,外围电路由燃气传感器、OLED液晶显示模块、按键模块、蜂鸣器报警模块、电磁阀以及SIM800模块等模块组成。燃气传感器模块负责采集燃气浓度数据,采集完成由S…

揭秘云计算 | 2、业务需求推动IT发展

揭秘云计算 | 1、云从哪里来?-CSDN博客https://blog.csdn.net/Ultipa/article/details/143430941?spm1001.2014.3001.5502 书接上文: 过去几十年间IT行业从大型主机过渡到客户端/服务器,再过渡到现如今的万物互联,IT可把控的资…

qt QItemSelectionModel详解

1、概述 QItemSelectionModel是Qt框架中提供的一个功能强大且灵活的项选择模型类。它主要用于在用户界面中管理和操作用户选定的项,是实现交互式和响应式应用程序的重要组件。QItemSelectionModel能够帮助开发者创建用户友好和高效的多选列表、表格数据选择等应用场…

SAP ABAP开发学习——WDA 七 使用文本与消息

目录 从数据字典读取文本 使用OTR文本 从程序中调用OTR文本 消息分类 定义消息显示位置 text类消息的使用 T100 消息的使用 OTR消息实例 消息内容修改 从数据字典读取文本 使用OTR文本 可以自己创建OTR文本 从程序中调用OTR文本 消息分类 定义消息显示位置 text类消息的…

实习作假:阿里健康实习做了RABC中台,还优化了短信发送流程

最近有二本同学说:“大拿老师,能帮忙看下简历吗?” 如果是从面试官的角度来看,这个同学的实习简历是很虚假的。 但是我们一直强调的是:校招的实习简历是不能出现明显的虚假。 首先,你去公司做事情&#…

mqtt 传递和推送 温湿度计消息 js

mqtt 传递和推送 温湿度计消息 做了一个mqtt的小网站 包括设备管理,订阅管理,连接认证订阅授权 这里我新增了一个设备 订阅组温湿度里面有两个订阅 设备详情授权给设备使用 设备连接 和之前的wifi连接一样 温湿度也和之前的使用一样 require(u…

基于Jeecgboot3.6.3vue3的flowable流程增加online表单的审批支持(一)整体思路

更多技术支持与服务请加入我的知识星球或加我微信,名称:亿事达nbcio技术交流社区https://t.zsxq.com/iPi8F 今天讲一下流程审批支持online表单,我们知道,之前的VForm3表单不支持数据库存储,自定义业务表单要求又比较高,需要自己写一些前后端的代码,那online就不需要,可以…

Git超详细笔记包含IDEA整合操作

git超详细笔记 文章目录 git超详细笔记第1章Git概述1.1、何为版本控制1.2、为什么需要版本控制1.3、版本控制工具1.4 、Git简史1.5、Git工作机制1.6 、Git和代码托管中心 第2章Git安装第3章Git常用命令3.1、设置用户签名3.2、初始化本地库本地库(Local Repository&a…

HTML 基础标签——多媒体标签<img>、<object> 与 <embed>

文章目录 1. `<img>` 标签主要属性示例注意事项2. `<object>` 标签概述主要属性示例注意事项3. `<embed>` 标签概述主要属性示例注意事项小结在现代网页设计中,多媒体内容的使用变得越来越重要,因为它能够有效增强用户体验、吸引注意力并传达信息。HTML 提…

flutter 项目初建碰到的控制台报错无法启动问题

在第一次运行flutter时&#xff0c;会碰见一直卡在Runing Gradle task assembleDebug的问题。其实出现这个问题的原因有两个。 一&#xff1a;如果你flutter -doctor 检测都很ok&#xff0c;而且环境配置都很正确&#xff0c;那么大概率就是需要多等一会&#xff0c;少则几十分…

使用ssh-key免密登录服务器或免密连接git代码仓库网站

ssh登录服务器场景 假设有两台机器&#xff0c;分别是&#xff1a; 源机器&#xff1a;主机A&#xff08;hostA&#xff09;&#xff0c;ip&#xff1a;198.168.0.1 目标机器&#xff1a;主机B&#xff08;hostB&#xff09;&#xff0c;ip&#xff1a;192.168.0.2 ssh-key免…