python将数据保存为pdf
生活随笔
收集整理的這篇文章主要介紹了
python将数据保存为pdf
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天給大家介紹一個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()輸出結果如下:
這個方法太丑了,可以試一試下面的方法
輸出結果如下:
保存網頁
# 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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue根据不同权限显示图片_vue多级权
- 下一篇: Python基础入门_2基础语法和变量类