当前位置: 首页 > news >正文

python创建pdf文件

目录

一:使用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")

相关文章:

python创建pdf文件

目录 一:使用reportlab库 二:使用使pdf库 在Python中生成PDF文件可以使用多种库,其中最常用的是reportlab和fpdf。以下是使用这两个库生成PDF文件的示例代码: 一:使用reportlab库 1:写入文字信息 from r…...

ubuntu开机报错/dev/nume0n1p2:clean

TOC 一、前提 1、当你平时用的图站或者linux系统出现这个问题,首先看看你的显卡有没有换位置。 我的就是项目电脑,同事换了显卡位置,我不知道,当我在这个基础上继续做的时候,出了问题。 2、当你是第一次装显卡&…...

openstack(T版)公有云--Dashboard服务

公有云上OpenStack Train最小化安装_openstack最小化部署-CSDN博客 我的opensatck(T)是参考上面链接去部署完成的,在部署完Dashboard服务后,将要用浏览器访问的时候出现了404 500 Internal Server Error 等各种各样的问题,以下是我排查问题…...

Vue ElementUI中el-table表格嵌套样式问题

一、表格嵌套要求: 两个表格嵌套,当父表格有children数组时子表格才展示;子表格数据少于父表格展示字段,且对应固定操作列不同; 二、嵌套问题: 当使用el-table的typeexpand实现表格嵌套时,样…...

ssm+vue的校园一卡通密钥管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的校园一卡通密钥管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系…...

docker进阶 问题1

如何使用Docker的容器调试和故障排查工具? Docker提供了一系列强大的工具来帮助开发者调试和排查容器中的问题。以下是一些关键步骤和工具的使用方法: 查看容器日志:使用docker logs [容器ID或名称]命令可以轻松查看容器的标准输出和错误。…...

【OpenVINO™】在 MacOS 上使用 OpenVINO™ C# API 部署 Yolov5 (下篇)

在 MacOS 上使用 OpenVINO™ C# API 部署 Yolov5 (下篇) 项目介绍 YOLOv5 是革命性的 "单阶段"对象检测模型的第五次迭代,旨在实时提供高速、高精度的结果,是世界上最受欢迎的视觉人工智能模型,代表了Ult…...

使用CHATGPT进行论文写作的缺点和风险

为了真正感受 ChatGPT 的写作潜力,让我们先将其与传统的论文写作方法进行一下比较分析 CHATGPT论文写作的缺点和风险 传统论文写作的考验和磨难很深:费力的研究、组织想法和精心设计的逻辑论证,往往以牺牲你的理智为代价。 进入ChatGPT&am…...

【Android-Gradle】多模块开发中,定义额外属性(全局变量),穿梭在不同的Gradle文件中(kotlin脚本版)

其他信息可以参考官网:https://docs.gradle.org/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html#org.gradle.api.plugins.ExtraPropertiesExtension 但是本文讲一些简单应用: 需求1:根目录gradle文件定义一个全局变量 …...

React18原理: Fiber架构下的单线程CPU调度策略

概述 React 的 Fiber 架构, 它的整个设计思想就是去参考CPU的调度策略CPU现在都是多核多进程的,重点研究的是 CPU是单核单线程,它是如何调度的?为什么要去研究单线程的CPU? 浏览器中的JS它是单线程的JS 的执行线程和浏览器的渲染GUI 是互斥…...

个人搜集的gstreamer学习链接

gstreamer资源: GStreamer: 官方英文官网 GStreamer C开发教程 (gstreamer安装包下载目录) GStreamer GitLab源码 gstreamer 插件列表) gstreamer官方文档: https://gstreamer.freedesktop.org/documentation/tutorials/index.html?gi-languagec …...

Blazor Wasm Gitee 码云登录

目录: OpenID 与 OAuth2 基础知识Blazor wasm Google 登录Blazor wasm Gitee 码云登录Blazor SSR/WASM IDS/OIDC 单点登录授权实例1-建立和配置IDS身份验证服务Blazor SSR/WASM IDS/OIDC 单点登录授权实例2-登录信息组件wasmBlazor SSR/WASM IDS/OIDC 单点登录授权实例3-服务端…...

Android 自定义BaseActivity

直接上代码: BaseActivity代码: package com.example.custom.activity;import android.annotation.SuppressLint; import android.app.Activity; import android.content.pm.ActivityInfo; import android.os.Bundle; import android.os.Looper; impor…...

基于鲲鹏服务器的LNMP配置

基于鲲鹏服务器的LNMP配置 系统 Centos8 # cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core) 卸载已经存在的旧版本的安装包 # rpm -qa | grep php #查看已经安装的PHP旧版本# rpm -qa | grep php | xargs rpm -e #卸载已经安装的旧版,如果提示有…...

MIT-Missing Semester_Topic 6:Version Control (Git) 练习题

文章目录 练习一练习二练习三练习四练习五练习六练习七 练习一 若还没有 Git 的相关经验,阅读 Pro Git 的前几章或诸如 Learn Git Branching 的相关教程,并在学习的同时从 Git 的数据模型(data model)的角度思考各 Git 命令。 老师…...

OpenHarmony轻量级内核-LiteOS-M

OpenHarmony轻量级内核 思维导图 https://download.csdn.net/download/lanlingxueyu/88816723 概述 内核是一人操作系统的运算核心,决定着系统的性能和稳定性。它是基于硬件的第一层软件扩充,提供操作系统的基本功能,是操作系统工作的基础。它负责管理系统的进程、内存、…...

TCP 传输控制协议——详细

目录 1 TCP 1.1 TCP 最主要的特点 1.2 TCP 的连接 TCP 连接,IP 地址,套接字 1.3 可靠传输的工作原理 1.3.1 停止等待协议 (1)无差错情况 (2)出现差错 (3)确认丢失和确认迟到…...

ArcGIS学习(六)地理数据库

ArcGIS学习(六)地理数据库 上个任务我们讲了一个非常重要的知识点一一坐标系。这个任务我们带来另外一个很重要的知识点一一地理数据库。 地理数据库的内容相比于坐标系简单很多! 首先,先让我们来学习下地理数据库的理论。 ArcGIS 中的地理数据库(Geodatabase)是一个用…...

保研机试算法训练个人记录笔记(四)——哈希算法

目录 两数之和 字母异位词分组 最长连续序列 力扣热题100——哈希算法 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答…...

ChatGPT实战100例 - (14) 打造AI编程助手 Code Copilot

文章目录 ChatGPT实战100例 - (14) 打造AI编程助手 Code Copilot一、Code Copilot AI编程助手二、制作代码生成器2.1 定义生成器框架2.2 从现有代码提取代码模板三、进行代码优化ChatGPT实战100例 - (14) 打造AI编程助手 Code Copilot 一、Code Copilot AI编程助手 Code Copi…...

系统辨识避坑指南:为什么你的最小二乘估计总是不准?从理论到MATLAB仿真的5个常见误区

系统辨识避坑指南:为什么你的最小二乘估计总是不准?从理论到MATLAB仿真的5个常见误区 在系统辨识的实际应用中,许多学习者和初级研发人员都会遇到一个共同的困惑:明明按照教科书上的步骤进行操作,为什么得到的结果却总…...

工业视觉系统选型实战:CCD相机与镜头参数计算全解析

1. 项目概述:从“神坛”到“工具箱”的CCD相机与镜头选型 在自动化视觉检测、精密测量和机器视觉领域,CCD工业相机和镜头的选型与参数计算,常常被新手工程师视为一个“黑箱”或“玄学”问题。客户一问到“这个系统能看多清楚?”、…...

2026年国产数据库大盘点与趋势:自主可控时代的数据库生态

一、2026年国产数据库市场概况 1. 市场发展现状 2026年国产数据库市场呈现稳步增长态势。在信创政策深化、数据安全法规完善的大背景下,数据库作为核心基础软件,其国产化进程持续推进。 2026年主要厂商市场表现: 金仓KES:在政务领…...

燃油车的“催命符”还是环保的“里程碑”?2026年Euro 7标准下的汽车变局

如果你正打算换车,或者对汽车行业的未来走向充满好奇,那么“Euro 7”(欧7排放标准)绝对是你绕不开的一个关键词。这项被业内称为“史上最严”的排放法规,将于2026年11月29日正式对新车型实施强制认证。它不仅给内燃机戴…...

面试必问:医学知识库 RAG 怎么设计?这次彻底讲透

医学知识库 RAG 怎么设计?一次讲清指南检索、文献召回、权限控制与可追溯回答 大家好,我是一名有 4 年工作经验的 Java 后端开发。 AI 医疗平台里,如果说最适合先落地的一类能力,我会优先推荐医学知识库问答。 因为它既能发挥大模…...

Nginx、Tengine、OpenRestry的http和tcp后端健康检查【20260520-003篇】

文章目录 一、Nginx 开源版(无第三方模块) 1. 被动健康检查(内置,默认) TCP 后端(stream 四层) HTTP 后端(http 七层) 2. Nginx + 第三方模块(主动检查) 编译 Nginx 加模块 HTTP 主动检查 TCP 主动检查 二、Tengine(原生带主动检查) HTTP 健康检查 TCP 健康检查 查…...

LabVIEW字符串处理保姆级教程:从长度计算到日期格式化,13个实例带你玩转

LabVIEW字符串处理实战指南:从基础操作到高级应用 在工业自动化、测试测量和仪器控制领域,LabVIEW作为图形化编程的标杆工具,其字符串处理能力直接影响着数据解析、通信协议实现等核心功能。本文将通过13个典型场景,系统讲解如何高…...

敏感词过滤的‘内存刺客’?深入剖析DFA/Trie树的优化实战与替代方案

敏感词过滤系统的内存优化实战:从DFA到双数组Trie的进阶之路 当你的应用日活突破百万级别,每天产生数千万条UGC内容时,敏感词过滤系统突然开始频繁触发Full GC——这可能是每个后端工程师的噩梦。传统的DFA实现就像潜伏在JVM中的"内存刺…...

K210+STM32F103C8T6低成本送药小车全流程:从硬件选型到代码调试避坑

K210STM32F103C8T6低成本送药小车全流程:从硬件选型到代码调试避坑 当电子竞赛遇上嵌入式开发,一个融合视觉识别与运动控制的送药小车项目,往往成为检验技术实力的试金石。本文将带你从零开始,用K210视觉模块与STM32F103C8T6主控芯…...

新手避坑指南:你的FPGA按键消抖仿真为什么和板子对不上?

FPGA按键消抖实战:从仿真完美到真实失效的深度排查手册 刚接触FPGA开发的工程师常会遇到一个诡异现象:按键消抖模块在ModelSim里跑得风生水起,波形干净漂亮,可一旦下载到开发板就各种失灵——要么按键没反应,要么按一次…...