今天给大家介绍一个python将数据保存为pdf的包:fpdf
安装代码为:pip install fpdf
我是用的是win10上的anaconda的python3.7版本

写一个简单的pdf代码

from fpdf import FPDFpdf  = FPDF()#加一页
pdf.add_page()#设置字体的大小和字体
pdf.set_font('Arial', size=15)#加一个单元
pdf.cell(200, 10, txt='hello world', ln=1, align='C')#加一个新的单元格
pdf.cell(200, 10, txt='this is a article.', ln=2, align='C')pdf.output('test.pdf')

改字体

q:有人会问如果我想保存的pdf是A5大小的,怎么办?

A: 不用担心,因为这个可以设置,

pdf = FPDF(orientation='P', unit='mm', format='A4')

这个包里内置了很多字体:

self.core_fonts={'courier': 'Courier','courierB': 'Courier-Bold','courierBI': 'Courier-BoldOblique','courierI': 'Courier-Oblique','helvetica': 'Helvetica','helveticaB': 'Helvetica-Bold', 'helveticaBI': 'Helvetica-BoldOblique','helveticaI': 'Helvetica-Oblique','symbol': 'Symbol','times': 'Times-Roman','timesB': 'Times-Bold','timesBI': 'Times-BoldItalic','timesI': 'Times-Italic','zapfdingbats': 'ZapfDingbats'}
from fpdf import FPDF
def change_fonts():pdf = FPDF()pdf.add_page()font_size = 8for font in pdf.core_fonts:if any([letter for letter in font if letter.isupper()]):# skip this fontcontinuepdf.set_font(font, size=font_size)txt = "Font name: {} - {} pts".format(font, font_size)pdf.cell(0, 10, txt=txt, ln=1, align="C")font_size += 2pdf.output("change_fonts.pdf")if __name__ == '__main__':change_fonts()

输入如下:

可以使用这个包画线

from fpdf import FPDF
def draw_lines():pdf = FPDF()pdf.add_page()pdf.line(10, 10, 10, 100)pdf.set_line_width(1)pdf.set_draw_color(255, 0, 0)pdf.line(20, 20, 100, 20)pdf.output('draw_lines.pdf')if __name__ == '__main__':draw_lines()

输出结果如下:

画几何图形

from fpdf import FPDF
def draw_shapes():pdf = FPDF()pdf.add_page()pdf.set_fill_color(255, 0, 0)pdf.ellipse(10, 10, 10, 100, 'F')pdf.set_line_width(1)pdf.set_fill_color(0, 255, 0)pdf.rect(20, 20, 100, 50)pdf.output('draw_shapes.pdf')if __name__ == '__main__':draw_shapes()

输出结果如下:

加图片

from fpdf import FPDF
def add_image(image_path):pdf = FPDF()pdf.add_page()pdf.image(image_path, x=10, y=8, w=100)pdf.set_font("Arial", size=12)pdf.ln(85)  # move 85 downpdf.cell(200, 10, txt="{}".format(image_path), ln=1)pdf.output("add_image.pdf")if __name__ == '__main__':add_image('airpods-pro.jpg')

输出结果如下:

有人会问,如果有很多的内容要加,是不是只会加在一页上?不是的

# multipage_simple.py
from fpdf import FPDF
def multipage_simple():pdf = FPDF()pdf.set_font("Arial", size=12)pdf.add_page()line_no = 1for i in range(100):pdf.cell(0, 10, txt="Line #{}".format(line_no), ln=1)line_no += 1pdf.output("multipage_simple.pdf")if __name__ == '__main__':multipage_simple()

输出结果如下:

加表

from fpdf import FPDF
def simple_table(spacing=1):data = [['First Name', 'Last Name', 'email', 'zip'],['Mike', 'Driscoll', 'mike@somewhere.com', '55555'],['John', 'Doe', 'jdoe@doe.com', '12345'],['Nina', 'Ma', 'inane@where.com', '54321']]pdf = FPDF()pdf.set_font("Arial", size=12)pdf.add_page()col_width = pdf.w / 4.5row_height = pdf.font_sizefor row in data:for item in row:pdf.cell(col_width, row_height*spacing,txt=item, border=1)pdf.ln(row_height*spacing)pdf.output('simple_table.pdf')if __name__ == '__main__':simple_table()

输出结果如下:
这个方法太丑了,可以试一试下面的方法

# simple_table_html.py
from fpdf import FPDF, HTMLMixin
class HTML2PDF(FPDF, HTMLMixin):pass
def simple_table_html():pdf = HTML2PDF()table = """<table border="0" align="center" width="50%"><thead><tr><th width="30%">Header 1</th><th width="70%">header 2</th></tr></thead><tbody><tr><td>cell 1</td><td>cell 2</td></tr><tr><td>cell 2</td><td>cell 3</td></tr></tbody></table>"""pdf.add_page()pdf.write_html(table)pdf.output('simple_table_html.pdf')if __name__ == '__main__':simple_table_html()

输出结果如下:

保存网页

# html2fpdf.py
from fpdf import FPDF, HTMLMixin
class HTML2PDF(FPDF, HTMLMixin):pass
def html2pdf():html = '''<h1 align="center">PyFPDF HTML Demo</h1><p>This is regular text</p><p>You can also <b>bold</b>, <i>italicize</i> or <u>underline</u>'''pdf = HTML2PDF()pdf.add_page()pdf.write_html(html)pdf.output('html2pdf.pdf')if __name__ == '__main__':html2pdf()

输出结果如下:

python将数据保存为pdf相关推荐

  1. python将图像保存为pdf及图片

    引言: 用python进行机器学习时需要分析数据画图及结果画图需要保存结果图片,为此,本博客稍微总结了一下常用的图片数据保存,如保存图像数据为pdf. 下面是一个用pytorch搭建的LSTM对sin ...

  2. Python小数据保存,有多少中分类?不妨看看他们的类比与推荐方案...

    小数据存储 我们在编写代码的时候,经常会涉及到数据存储的情况,如果是爬虫得到的大数据,我们会选择使用数据库,或者excel存储.但如果只是一些小数据,或者说关联性较强且存在存储后复用的数据,我们该如何 ...

  3. Python实现数据保存为PSV文件(先创建CSV,转换成PSV)

    CSV格式文件:分隔符 ',' comma逗号 PSV格式文件:分隔符'|',管道文件pipe-delimited text files TSV 格式文件:分隔符' '  tab空格 步骤: 1.先创 ...

  4. python将数据保存为csv格式

    python保存csv 保存字典数据 import csv item = {'title': '穆斯林的葬礼', 'asin': '', 'url': '', 'brand': ''} fieldna ...

  5. python将数据保存为json文件时,打开json文件里面的中文发现是unicode码

    最近要将爬取的数据通过json.dump处理后保存成json文件,程序一切运行正常,但是打 开保存之后的json文件发现除了字母,原来的字典数据里面的中文全部变成了unicode 码,像下面这个样子 ...

  6. python 将数据保存为excel的xls格式

    #引入xlwt模块(提前pip下载好) import xlwt #使用workbook方法,创建一个新的工作簿 book = xlwt.Workbook(encoding='utf-8',style_ ...

  7. flask的html导出成PDF,使用Python将网页保存为PDF?

    我已经生成的,包含了一些计算结果,并伴随有一个"导出为PDF"按钮注释部分网页导出一个完整的网页,结果为PDF. 我做了什么至今如下: from flask import Flas ...

  8. python如何读取数据保存为新格式_Python Numpy中数据的常用保存与读取方法

    在经常性读取大量的数值文件时(比如深度学习训练数据),可以考虑现将数据存储为Numpy格式,然后直接使用Numpy去读取,速度相比为转化前快很多. 下面就常用的保存数据到二进制文件和保存数据到文本文件 ...

  9. Python中数据的保存和读取

    在科学计算的过程中,往往需要保存一些数据,也经常需要把保存的这些数据加载到程序中,在 Matlab 中我们可以用 save 和 lood 函数很方便的实现.类似的在 Python 中,我们可以用 nu ...

  10. 数据挖掘基础之数据清洗:用python把“深圳二手房参考价”PDF保存为EXCEL

    坑DIE的住建局再一次不限富豪限刚需,公布了深圳市住宅小区二手住房成交参考价格,买房更难,首付更难凑... 数据挖掘基础之数据清理:用python把深圳二手房参考价PDF保存为EXCEL,以便其他分析 ...

最新文章

  1. javaSE基础04
  2. 关于ABST2的若干问题
  3. Windows 安装redis
  4. ant design中的栅格化系统
  5. 关于lvalue and rvalue
  6. spring安全性_具有PreAuthorize的Spring方法安全性
  7. 科目三路考需准备事项
  8. yarn:hadoop YarnChild OutOfMemoryError Java heap space || GC Overhead limit
  9. Repeater绑定ArrayList数据源
  10. Sql Decimal类型 运算结果的精度和小数位数
  11. ubuntu系统工具记录
  12. Rust : 加密中数论基础知识、RSA加密算法及证明(待续)
  13. java io学习 IO流的分类
  14. SpringBoot系列(7):SpringBoot启动流程源码分析()
  15. 电源大师课笔记 2.1
  16. 清华计算机系超算团队,清华大学学生超算团队
  17. TrueCrypt中文版怎么用?TrueCrypt使用方法及详细教程介绍
  18. 【微信小程序】自己的小程序跳转到京东小程序商品详情页
  19. Python 告诉你中秋应该去哪里
  20. sxt_1_struts2入门_hello

热门文章

  1. 计算机蓝屏分析报告,如何获取电脑蓝屏后的错误报告DMP文件
  2. 台州银行登录显示服务器异常,手把手教你设置台州银行网上银行【处理办法】...
  3. 计算机网络华为模拟器,华为模拟器eNSP Win10版
  4. 【控制】动力学建模简介 --> 牛顿-欧拉 (Newton-Euler) 法和拉格朗日 (Lagrange) 法
  5. java 读取网络js文件_JavaScript 读写文件
  6. html+css入门(参考b站黑马
  7. 小白的一周学习汇总!
  8. UE4_BIM替换材质处理流程
  9. PMP第六版-49个子过程ITTO总结
  10. 菜鸟的数学建模之路(五):Logistic模型