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")

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

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

相关文章

【深度学习理论】持续更新

文章目录 1.统计学习理论 1.统计学习理论 统计学习理论,一款适合零成本搞深度学习的大冤种的方向 从人类学习到机器学习的对比(学习的过程分为归纳和演绎 ),引出泛化和过拟合的概念。 如何表示归纳的函数规律呢?以监督…

XAI:探索AI决策透明化的前沿与展望

文章目录 📑前言一、XAI的重要性二、为什么需要可解释人工智能三、XAI的研究与应用四、XAI的挑战与展望 📑前言 随着人工智能技术的快速发展,它已经深入到了我们生活的方方面面,从智能手机、自动驾驶汽车到医疗诊断和金融投资&…

【Linux驱动】块设备驱动(二)—— 块设备读写(使用请求队列)

块设备的操作函数并没有类似于字符驱动中的read 和write函数,要实现读写操作,只能在请求处理函数中实现。这就分为两种,是否要使用请求队列,请求队列的主要作用是管理和调度IO请求。在以下情况中,一般需要用到请求队队…

C++:深入剖析默认参数

看下列代码执行结果&#xff0c;你猜一猜会输出什么&#xff1f; #include<iostream> using namespace std; struct A {virtual void fun(int a 10) {cout << "A,a"<<a;} }; struct B :public A {void fun(int a 5) {cout <<"B,a&qu…

re:从0开始的CSS学习之路 1. CSS语法规则

0. 写在前面 现在大模型卷的飞起&#xff0c;感觉做页面的活可能以后就不需要人来做了&#xff0c;不知道现在还有没有学前端的必要。。。 1. HTML和CSS结合的三种方式 在HTML中&#xff0c;我们强调HTML并不关心显示样式&#xff0c;样式是CSS的工作&#xff0c;现在就轮到C…

编码世界探秘:原反补码与实数表示,含定点、浮点及BCD编码

数值的编码表示 整数编码表示 在计算机中&#xff0c;因为只有0和1这两种形式&#xff0c;但为了表示数的正&#xff08;&#xff09;&#xff0c;负&#xff08;-&#xff09;号&#xff0c;就要将数的符号以0和1编码。 通常把一个数的最高位定义为符号位&#xff0c;用0表…

Zephyr NRF7002 实现AppleJuice

BLE的基础知识 ble的信道和BR/EDR的信道是完全不一样的。但是范围是相同的&#xff0c;差不多也都是2.4Ghz的频道。可以简单理解为空中有40个信道0~39信道。两个设备在相同的信道里面可以进行相互通信。 而这些信道SIG又重新编号&#xff1a; 这个编号就是把37 38 39。 3个信道…

Python中的while循环,知其然知其所以然

文章目录 while循环结构1.用循环打印1 ~ 100步骤解析2. 1 ~ 100的累加和3.死循环1. 用死循环的方法实现 1 ~ 100累加和 4. 单向循环(1)打印 一行十个小星星*(2)通过打印一个变量的形式,展现一行十个小星星(3)一行十个换色的星星 ★☆★☆★☆★☆★☆(4)用一个循环,打印十行十列…

5、从 CSV 到 ChatGPT 的完整分析报告,只需 5 个简单步骤

从 CSV 到 ChatGPT 的完整分析报告,只需 5 个简单步骤 数据分析是一项耗时的活动。使用 ChatGPT,我们可以在短时间内进行数据汇总、数据预处理、数据可视化等。 无论您从事什么行业,在数据驱动时代,知道如何分析数据比以往任何时候都更加重要。数据分析将使企业能够保持竞…

【C语言 - 哈希表 - 力扣 - 相交链表】

相交链表题目描述 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0…

【VTKExamples::PolyData】第二十期 ImplicitModeller

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享VTK样例ImplicitModeller技术,并解析接口vtkImplicitModeller,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 1. I…

JVM 性能调优 - JVM 参数基础(2)

查看 JDK 版本 $ java -version java version "1.8.0_151" Java(TM) SE Runtime Environment (build 1.8.0_151-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode) 查看 Java 帮助文档 $ java -help 用法: java [-options] class [args...] …