reportlab使用示例:文字和图片
Python的reportlab专门将数据使用生成PDF中的图形和文档功能,
下载ReportLab
https://pypi.python.org/simple/reportlab/
http://www.reportlab.com/software/opensource/rl-toolkit/download/
生成一个简单的helloworld
- from reportlab.graphics.shapes import Drawing, String
- from reportlab.graphics import renderPDF
- d = Drawing(100, 100)
- s = String(50, 50, 'Hello, world!', textAnchor='middle')
- d.add(s)
- renderPDF.drawToFile(d, 'hello.pdf', 'A simple PDF file')
三条折线
- from reportlab.lib import colors
- from reportlab.graphics.shapes import *
- from reportlab.graphics import renderPDF
- data = [
- # Year Month Predicted High Low
- (2007, 8, 113.2, 114.2, 112.2),
- (2007, 9, 112.8, 115.8, 109.8),
- (2007, 10, 111.0, 116.0, 106.0),
- (2007, 11, 109.8, 116.8, 102.8),
- (2007, 12, 107.3, 115.3, 99.3),
- (2008, 1, 105.2, 114.2, 96.2),
- (2008, 2, 104.1, 114.1, 94.1),
- (2008, 3, 99.9, 110.9, 88.9),
- (2008, 4, 94.8, 106.8, 82.8),
- (2008, 5, 91.2, 104.2, 78.2),
- ]
- drawing = Drawing(200, 150)
- pred = [row[2]-40 for row in data]
- high = [row[3]-40 for row in data]
- low = [row[4]-40 for row in data]
- times = [200*((row[0] + row[1]/12.0) - 2007)-110 for row in data]
- drawing.add(PolyLine(zip(times, pred), strokeColor=colors.blue))
- drawing.add(PolyLine(zip(times, high), strokeColor=colors.red))
- drawing.add(PolyLine(zip(times, low), strokeColor=colors.green))
- drawing.add(String(65, 115, 'Sunspots', fontSize=18, fillColor=colors.red))
- renderPDF.drawToFile(drawing, 'report1.pdf', 'Sunspots')
最终的sunspot
- from urllib import urlopen
- from reportlab.graphics.shapes import *
- from reportlab.graphics.charts.lineplots import LinePlot
- from reportlab.graphics.charts.textlabels import Label
- from reportlab.graphics import renderPDF
- URL = 'http://www.swpc.noaa.gov/ftpdir/weekly/Predict.txt'
- COMMENT_CHARS = '#:'
- drawing = Drawing(400, 200)
- data = []
- for line in urlopen(URL).readlines():
- if not line.isspace() and not line[0] in COMMENT_CHARS:
- data.append([float(n) for n in line.split()])
- pred = [row[2] for row in data]
- high = [row[3] for row in data]
- low = [row[4] for row in data]
- times = [row[0] + row[1]/12.0 for row in data]
- lp = LinePlot()
- lp.x = 50
- lp.y = 50
- lp.height = 125
- lp.width = 300
- lp.data = [zip(times, pred), zip(times, high), zip(times, low)]
- lp.lines[0].strokeColor = colors.blue
- lp.lines[1].strokeColor = colors.red
- lp.lines[2].strokeColor = colors.green
- drawing.add(lp)
- drawing.add(String(250, 150, 'Sunspots',
- fontSize=14, fillColor=colors.red))
- renderPDF.drawToFile(drawing, 'report2.pdf', 'Sunspots')
reportlab使用示例:文字和图片的更多相关文章
- C#操作word模板插入文字、图片及表格详细步骤
c#操作word模板插入文字.图片及表格 1.建立word模板文件 person.dot用书签 标示相关字段的填充位置 2.建立web应用程序 加入Microsoft.Office.Interop.W ...
- Android(java)学习笔记139:在TextView组件中利用Html插入文字或图片
首先我们看看代码: 1.activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/r ...
- PHP 文字,图片水印,缩略图,裁切成小图(大小变小)
文字水印基本思路:1.用getimagesize()获取图片的信息(as:大小,属性等):2.根据图片信息用imagecreatefromjpeg ()/imagecreatefromgif/imag ...
- Android(java)学习笔记81:在TextView组件中利用Html插入文字或图片
1. TextView中利用Html插入文字或者图片: 首先我们看看代码: (1)activity_main.xml: <LinearLayout xmlns:android="htt ...
- PHP---微信JS-SDK获取access_token/jsapi_ticket/signature权限签名算法,php/thinkphp实现微信分享自定义文字和图片
PHP---微信JS-SDK获取access_token/jsapi_ticket/signature权限签名算法, php/thinkphp实现微信分享自定义文字和图片. 一.先看微信JS-SDK文 ...
- [转]C#操作word模板插入文字、图片及表格详细步骤
c#操作word模板插入文字.图片及表格 1.建立word模板文件 person.dot用书签 标示相关字段的填充位置 2.建立web应用程序 加入Microsoft.Office.Interop.W ...
- C#爬取微博文字、图片、视频(不使用Cookie)
前两天在网上偶然看到一个大佬OmegaXYZ写的文章,Python爬取微博文字与图片(不使用Cookie) 于是就心血来潮,顺手撸一个C#版本的. 其实原理也很简单,现在网上大多数版本都需要Cooki ...
- Android开发学习之路-带文字的图片分享
有用过微信分享SDK的都应该知道,微信分享到朋友圈的时候是不能同时分享图片和文字的,只要有缩略图,那么文字就不会生效.那么问题就来了,如果我们想把APP内的某些内容连带图片一起分享到微信,是不是没办法 ...
- Android实现自定义带文字和图片的Button
Android实现自定义带文字和图片的Button 在Android开发中经常会需要用到带文字和图片的button,下面来讲解一下常用的实现办法. 一.用系统自带的Button实现 最简单的一种办法就 ...
- iOS·UIButton如何文字在下图片在上
创建子类继承自UIButton,在layoutSubviews方法中改变文字和图片的位置就可以了,同理,稍作改变,可以写出文字在上图片在下.本文只给出文字在下图片在上的代码 -(void)layout ...
随机推荐
- asp.net ajax 简单案例
第一步先引用 scriptManager <asp:UpdatePanel ID="UpdatePanelGuanZhu" runat="server"& ...
- SSDB 一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis.
SSDB 一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis. 特性 替代 Redis 数据库, Redis 的 100 倍容量 LevelDB 网络支持, 使用 C/C++ ...
- 安卓代码迁移:ActionBarActivity: cannot be resolved to a type
参考链接:http://stackoverflow.com/questions/18830736/actionbaractivity-cannot-be-resolved-to-a-type in e ...
- Eclipse 插件ibeetl
启动Eclipse 打开菜单栏按一下菜单路径依次打开 Help -> Install New Softwave… ->点击Add按钮弹出一个对话框 弹出的对话框中Name随意填写,如填写“ ...
- CodeForces 356A_(set应用,线段树)
A. Knight Tournament time limit per test 3 seconds memory limit per test 256 megabytes input standar ...
- Hadoop-2.2.0集群部署时live nodes数目不对的问题
关于防火墙,hadoop本身配置都确定没任何问题,集群启动不报错,但打开50070页面,始终live nodes数目不对,于是我尝试/etc/hosts文件配置是否存在逻辑的错误: 127.0.0.1 ...
- py西游公关之模块
Py西游攻关之模块 模块&包(* * * * *) 模块(modue)的概念: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可 ...
- web自动化的行为驱动
1.新建一个features包,在新建一个steps包 2.新建一个register.features文件 #coding=utf-8Feature:Register User As a develo ...
- eas之动态刷新Table
如何刷新表体数据行(表头不变) 示例1:删除所有表体行,并重新发取数事件该方法不会修改原先的绑定信息table.removeRows(); 示例2:删除所有表体行,修改绑定信息并重新取数指定新的que ...
- SQL第二节课
SQL练习题 一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的 ...