python创建pdf文件

news2024/11/19 17:26:09

目录

一:使用reportlab库

二:使用使pdf库


在Python中生成PDF文件可以使用多种库,其中最常用的是reportlab和fpdf。以下是使用这两个库生成PDF文件的示例代码:

一:使用reportlab库


1:写入文字信息
from reportlab.pdfgen import canvas  
  
# 创建一个PDF文件  
pdf = canvas.Canvas("example.pdf")  
  
# 在PDF文件中添加文本  
pdf.drawString(100, 750, "Hello, World!")  
  
# 保存PDF文件  
pdf.save()

2:写入图片信息


from reportlab.lib.pagesizes import letter  
from reportlab.lib.units import inch  
from reportlab.pdfgen import canvas  
from reportlab.platypus import Image  
  
# 创建一个PDF文件并设置页面大小  
pdf = canvas.Canvas("example.pdf", pagesize=letter)  
  
# 加载图像文件  
image_path = "path/to/your/image.jpg"  # 替换为您的图像文件的路径  
image = Image(image_path)  
  
# 计算图像的尺寸并将其插入到PDF中  
image.drawOn(pdf, 0, 0, scale=1, angle=0)  
  
# 保存PDF文件  
pdf.save()

3:创建新页面

from reportlab.pdfgen import canvas  
  
# 创建一个PDF文件  
pdf = canvas.Canvas("example.pdf")  
  
# 添加一页  
pdf.showPage()  
  
# 保存PDF文件  
pdf.save()

4:设置标题

from reportlab.lib.pagesizes import letter  
from reportlab.lib.units import inch  
from reportlab.pdfgen import canvas  
from reportlab.platypus import Paragraph, Spacer, PageBreak, getSampleStyleSheet  
  
# 创建一个PDF文件并设置页面大小  
pdf = canvas.Canvas("example.pdf", pagesize=letter)  
  
# 创建一个段落对象并设置标题内容  
title = "我的标题"  # 替换为你想要的标题内容  
paragraph = Paragraph(title, style=styles["Heading1"])  # 使用Heading1样式,你可以根据需要选择其他样式  
  
# 将段落对象添加到故事对象中  
story = [paragraph]  
  
# 在PDF中添加故事对象,并添加一个页面分隔符  
pdf.addFromList(story, pagebreakbefore=True)  # 在添加故事对象之前先添加一个页面分隔符  
  
# 保存PDF文件  
pdf.save()

二:使用使pdf库

1:写入文字信息


from fpdf import FPDF  
  
# 创建一个PDF对象  
pdf = FPDF()  
  
# 添加一页  
pdf.add_page()  
  
# 在PDF中添加文本  
pdf.set_font("Arial", size=12)  
pdf.cell(200, 10, txt="Hello, World!", ln=True)  
  
# 保存PDF文件  
pdf.output("example.pdf")

2:写入图片信息

from fpdf import FPDF  
  
# 创建一个PDF对象  
pdf = FPDF()  
  
# 添加一页  
pdf.add_page()  
  
# 加载图像文件  
image_path = "path/to/your/image.jpg"  # 替换为您的图像文件的路径  
pdf.image(image_path, x=0, y=0, w=500, h=600)  # 设置图像的位置和大小  
  
# 保存PDF文件  
pdf.output("example.pdf")

3:创建新页面

from fpdf import FPDF  
  
# 创建一个PDF对象  
pdf = FPDF()  
  
# 添加一页  
pdf.add_page()  

# 保存PDF文件  
pdf.output("example.pdf")

4:设置标题

from fpdf import FPDF  
  
# 创建一个PDF对象  
pdf = FPDF()  
  
# 添加一页  
pdf.add_page()  
  
# 设置标题  
pdf.set_font("Arial", size=14)  # 设置字体和字号  
pdf.cell(0, 10, txt="标题", ln=True, align='C')  # 添加标题,居中对齐  
  
# 保存PDF文件  
pdf.output("example.pdf")

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

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

相关文章

34 使用 LNMP 架构部署动态网站环境

源码包程序 LNMP 动态网站部署架构 LNMP 动态网站部署架构是一套由 Linux Nginx MySQL PHP 组成的动态网站系统 解决方案。 1. 准备工作 在使用源码包安装服务程序之前,首先要让安装主机具备编译程序源码的环境。这需要 具备 C 语言、C语言、Perl 语言的编译器&…

宝塔+php+ssh+vscode+虚拟机 远程调试

远程(虚拟机)宝塔 安装扩展 配置文件添加,zend_extension看你虚拟机的具体位置 [Xdebug] zend_extension/www/server/php/74/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so xdebug.modedebug xdebug.start_with_requesttrigger xdebug.client_host&quo…

关于RabbitMQ面试题汇总

什么是消息队列?消息队列有什么用? 消息队列是一种在应用程序之间传递消息的通信机制。它是一种典型的生产者-消费者模型,其中生产者负责生成消息并将其发送到队列中,而消费者则从队列中获取消息并进行处理。消息队列的主要目的是…

spring boot学习第十篇:elastic search必须使用用户名密码授权后才能访问、在java代码中操作索引

前提条件:安装好了elastic search服务,参考:elastic search入门_ubuntu elasticsearch 密码-CSDN博客 1、配置elastic search必须使用用户名密码授权才能访问 1.1开启x-pack验证 修改config目录下面的elasticsearch.yml文件,添…

#Z2322. 买保险

一.题目 二.思路 1.暴力 训练的时候&#xff0c;初看这道题&#xff0c;这不就打个暴力吗&#xff1f; 2.暴力代码 #include<bits/stdc.h> #define int long long using namespace std; int n,m,fa,x,y,vis[1000001],ans; vector<int> vec[1000001]; void dfs(i…

LabVIEW高精度微小电容测量

LabVIEW高精度微小电容测量 在电子工程和科研领域&#xff0c;精确测量微小电容值是一项有一定要求的任务&#xff0c;尤其在涉及到高精度和低成本时。设计了一种基于LabVIEW高精度微小电容测量系统&#xff0c;旨在提供一个既经济又高效的解决方案。 该系统的核心在于使用FD…

Vue3.0(三):Vue组件化深入理解

Vue组件化深入理解 生命周期 每个组件都可能经历 创建、挂载、更新、卸载等一系列过程 在每个阶段&#xff0c;我们可能会添加一些属于自己的逻辑代码 在Vue中&#xff0c;生命周期通过生命周期函数实现 生命周期函数实际上就是回调函数&#xff0c;在某个时间会被Vue源码调…

14.scala隐式转换

目录 概述实践代码执行结果 结束 概述 隐式转换&#xff1a;偷偷的(隐式)对现有功能进行增强(转换) 实践 代码 package com.fun.scalaimport java.io.File import scala.io.Sourceobject ImplicitApp {def main(args: Array[String]): Unit {// implicit 2 to 等价 &…

后台系统--搭建前端环境

这里写目录标题 1. 安装vscode1.1 安装1.2 安装插件 2. 安装node.js&#xff0c;推荐163. 创建工作区3.1 创建空文件夹&#xff0c;不能有中文3.2 vscode打开文件夹&#xff0c;保存为工作区3.3 安装依赖 1. 安装vscode 1.1 安装 1.2 安装插件 2. 安装node.js&#xff0c;推荐…

C语言之数据在内存中的存储

目录 1. 整数在内存中的存储2. 大小端字节序和字节序判断什么是大小端&#xff1f;为什么有大小端&#xff1f;练习1练习2练习3练习4练习5练习6 3. 浮点数在内存中的存储浮点数存的过程浮点数取得过程练习题解析 1. 整数在内存中的存储 在讲解操作符的时候&#xff0c;我们已经…

Windows下Node.js下载安装及环境变量配置教程

Windows下Node.js下载安装及环境变量配置教程 安装版本&#xff1a;node-v18.19.0-x64.msi 文章目录 Windows下Node.js下载安装及环境变量配置教程一、Node.js和NPM简介二、下载地址三、安装步骤四、环境配置五、安装淘宝镜像总结 一、Node.js和NPM简介 1、Node.js &#xf…

嵌入式软件设计方式与方法

1、嵌入式软件与设计模式 思从深而行从简 软件开发&#xff0c;难的不是编写软件&#xff0c;而是编写功能正常的软件。软件工程化才能保证软件质量和项目进度&#xff0c;而设计模式使代码开发真正工程化&#xff0c;设计模式是软件工程的基石。 所谓设计模式就是对常见问题的…

[BUUCTF]-PWN:inndy_echo解析

查看保护 查看ida 有格式化字符串漏洞&#xff0c;可以修改printf的got表内地址为system&#xff0c;传参getshell 解法一&#xff1a; 在32位中可以使用fmtstr_payload直接修改&#xff0c;免去很多麻烦 完整exp&#xff1a; from pwn import* pprocess(./echo) premote(n…

《低功耗方法学》翻译——附录B:UPF命令语法

附录B&#xff1a;UPF命令语法 本章介绍了文本中引用的所选UPF命令的语法。 节选自“统一电源格式&#xff08;UPF&#xff09;标准&#xff0c;1.0版”&#xff0c;经该Accellera许可复制。版权所有&#xff1a;(c)2006-2007。Accellera不声明或代表摘录材料的准确性或内容&…

Could not connect to Redis at 127.0.0.1:6379:由于目标计算机积极拒绝,无法连接...问题解决方法之一

一、问题描述 将Redis压缩包解压后&#xff0c;安装Redis过程中出现问题Could not connect to Redis at 127.0.0.1:6379:由于目标计算机积极拒绝&#xff0c;无法连接... 官网windows下redis开机自启动的指令如下&#xff1a; 1、在redis目录下执行 redis-server --service-in…

深入理解Java中的二叉树

目录 一、什么是二叉树? 二、二叉树的主要类型 三、二叉树的实现 四、二叉树的应用 五、关于二叉树的题目 引言: 二叉树是计算机科学中常用的一种数据结构&#xff0c;它是由节点组成的层级结构&#xff0c;每个节点最多有两个子节点。在Java编程语言中&#xff0c;二…

论文阅读——MP-Former

MP-Former: Mask-Piloted Transformer for Image Segmentation https://arxiv.org/abs/2303.07336 mask2former问题是&#xff1a;相邻层得到的掩码不连续&#xff0c;差别很大 denoising training非常有效地稳定训练时期之间的二分匹配。去噪训练的关键思想是将带噪声的GT坐标…

Spring Boot整合MyBatis Plus实现基本CRUD与高级功能

文章目录 1. 引言2. 项目搭建与依赖配置2.1 添加MyBatis Plus依赖2.2 配置数据源与MyBatis Plus 3. 实现基本CRUD功能3.1 创建实体类3.2 创建Mapper接口3.3 实现Service层3.4 控制器实现 4. 高级功能实现4.1 自动填充功能4.2 乐观锁功能4.3 逻辑删除功能 5. 拓展&#xff1a;My…

手机市场竞争加剧,三星7天机以优质性价比与服务脱颖而出

在当今竞争激烈的手机市场中&#xff0c;三星旗舰手机凭借其卓越的外观设计、强大的硬件配置等显著优势&#xff0c;一直稳坐市场的高地&#xff0c;深受星粉们的热烈追捧。然而&#xff0c;旗舰手机的高昂价格也让许多潜在用户望而却步。为了打破这一壁垒&#xff0c;让更多消…

运维自动化bingo前端

项目目录结构介绍 项目创建完成之后&#xff0c;我们会看到bingo_web项目其实是一个文件夹&#xff0c;我们进入到文件夹内部就会发现一些目录和文件&#xff0c;我们简单回顾一下里面的部分核心目录与文件。 ├─node_modules/ # node的包目录&#xff0c;项目运行的依赖包…