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

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.rhkb.cn/news/465838.html

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

相关文章

2-2.STM32之定时器TIM---输入捕获--实验2( PWMI模式测频率占空比)

输入捕获模式测频率、PWMI模式测频率占空比-CSDN博客 参考这篇文章! 来利用一个GPIO的定时器的两个通道进行捕获占空比和频率,看出可以看出。TI1FP1和TI2FP2,计数值分别在CCR1和CCR2中取, 测周法 IC.c #include "stm32f1…

2024年转行指南:大学生进军就业前景广阔的领域——人工智能大模型

据教育部数据统计,2024高校毕业生规模预计达1179万人,将再创历史新高,“就业难”仍是当前大学毕业生需要直面的问题。在此背景下,选择一个就业前景好的专业尤为重要。 究竟学什么样的专业好就业呢?给毕业生们推荐3个当…

suanfabiji

1 差分练习 1 模板题 代码实现: import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int m sc.nextInt();int num sc.nextInt();long[][] arr new long[n 2][m 2…

WPS单元格重复值提示设置

选中要检查的所有的单元格 设置提示效果 当出现单元格值重复时,重复的单元格就会自动变化 要修改或删除,点击

一.Linux文件基本属性

前言:Linux系统是一个多用户系统,不同的用户处于不同的地位,也就是说具有不同的权限。为了安全,对于不同用户访问同一个文件,设置不同权限是很有必要的。 一.文件的基本属性理解 在Linux中,通常是这两个命…

【学习记录】使用CARLA录制双目摄像头SLAM数据

一、数据录制 数据录制的部分参考了网上的部分代码,代码本身并不复杂,基本都是简单的CARLA语法,关键的一点在于,CARLA内部本身并没有预设的双目摄像头,需要我们添加两个朝向相同的摄像头来组成双目系统,这…

算法的基础知识

算法的定义 算法是为了解决某类问题而规定的一个有限长的操作序列。 算法的特性 1. 有穷性(Finiteness) 含义:一个算法必须总是在执行有穷步后结束,且每一步都必须在有穷时间内完成。重要性:确保算法能够在合理的时…

城镇保障性住房管理:SpringBoot技术应用

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

【ComfyUI】flux人像摄影风格迁移的最优解?这个效果应该暂时无敌了吧?效果不好你打我!

大家好,这期我们主要讨论如何使用stable diffusion comfyUI 制作基于flux的人像摄影,主要实现风格迁移的功能。 我们都知道flux的生态目前不太完善,flux的controlnet和flux ipadapter虽然有,但效果不太好,可控性不强。…

基于微信的追星小程序+ssm(lw+演示+源码+运行)

摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,追星小程序被用户普遍使用,为方便用户能够可以…

esp32cam+Arduino IDE在编译时提示找不到 esp_camera.h 的解决办法

多半是因为你的ESP32库升级了,不再是 1.02版本,或者根本就没有 ESp32 库。如果被升级了,还原为1.02版本就可以了。如果没有,按照下述方法添加: 首先,在"文件"->"首选项"->"…

基于物联网设计的地下煤矿安全监测与预警

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成 1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发 1.5 模块的技术详情介绍【1】NBIOT-BC26模块【2】MQ5传感器【4】DHT11传感器【5】红外热释电人体检…

第8章 利用CSS制作导航菜单作业

1.利用CSS技术&#xff0c;结合链接和列表&#xff0c;设计并实现“山水之间”页面。 浏览效果如下&#xff1a; HTML代码如下&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>山水之间</title><…

32单片机HAL库的引脚初始化

在使用HAL库时&#xff0c;GPIO初始化函数定义在stm32f4xx_hal_gpio.c文件中&#xff0c;如下&#xff1a; void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init); 由这个函数可以看出&#xff0c;在初始化GPIO时&#xff0c;需要向函数传入2个结构体&…

Django安装

在终端创建django项目 1.查看自己的python版本 输入对应自己本机python的版本&#xff0c;列如我的是3.11.8 先再全局安装django依赖包 2.在控制窗口输入安装命令&#xff1a; pip3.11 install django 看到Successflully 说明我们就安装成功了 python的Scripts文件用于存…

网络层5——IPV6

目录 一、IPv6 vs IPv4 1、对IPv6主要变化 2、IPv4 vs IPv6 二、IPv6基本首部 1、版本——4位 2、通信量类——8位 3、流标号——20位 4、有效载荷长度——16位 5、下一个首部——8位 6、跳数限制——8位 7、源 、 目的地址——128位 8、扩展首部 三、IPv6地址 1…

怎么样鉴定疾病相关稀有细胞群?二值化精细模型标签,这个刚发的顶刊单细胞算法值得一学!

生信碱移 HiDDEN&#xff1a;抽丝剥茧 在具有病例和对照单细胞RNA测序研究中&#xff0c;样本级标签通常被直接赋予单个细胞&#xff0c;假设所有病例细胞都受影响。这种传统方法在受影响细胞比例较小或扰动强度较弱时&#xff0c;难以有效识别关键细胞及其标记基因&#xff…

三周精通FastAPI:33 在编辑器中调试

官方文档&#xff1a;https://fastapi.tiangolo.com/zh/tutorial/debugging/ 调试 你可以在编辑器中连接调试器&#xff0c;例如使用 Visual Studio Code 或 PyCharm。 调用 uvicorn 在你的 FastAPI 应用中直接导入 uvicorn 并运行&#xff1a; import uvicorn from fast…

Spring Boot关闭时,如何确保内存里面的mq消息被消费完?

1.背景 之前写一篇文章Spring Boot集成disruptor快速入门demo&#xff0c;有网友留言如下图&#xff1a; 针对网友的留言&#xff0c;那么我们如何解决这个问题呢 Spring-Boot应用停机时&#xff0c;如何保证其内存消息都处理完成&#xff1f; 2.解决方法 方法其实挺简单的&…

vue3+vite搭建脚手架项目使用eletron打包成桌面应用+可以热更新

当前Node版本&#xff1a;18.12.0&#xff0c;npm版本&#xff1a;8.19.2 1.搭建脚手架项目 搭建Vue3ViteTs脚手架-CSDN博客 可删掉index.html文件的title标签 2.配置package.json {"name": "my-vite-project","private": true,"versi…