[reportlab轿车呢个(6)]——reportlab类库技术用例-pdf报表 头尾
2013-05-08 10:57
369 查看
Reportlab 对生首页和后续页面的处理,定义两个回调函数,如下:
整个例子
转自:http://basiccoder.com/tag/python
http://blog.csdn.net/xto/article/details/5403902
def on_first_page(canvas, doc): canvas.saveState() canvas.setFont('song', 9) canvas.setFillColor('grey') footer = 'Generated by Tweets2pdf at %s' % \ time.strftime('%a %b %d %H:%M:%S %Y', time.localtime()) footer += ' Powered by @levin108' canvas.drawCentredString((PAGE_WIDTH)/2, 25, footer) canvas.restoreState() def on_later_pages(canvas, doc): canvas.saveState() canvas.setFont('song', 9) canvas.drawString((PAGE_WIDTH/2)-5, 25, u"%d" % (doc.page - 1)) canvas.restoreState() pdfdoc.build(elements, onFirstPage = on_first_page, onLaterPages = on_later_pages)
整个例子
#coding=utf-8 def init_config(): import reportlab.rl_config reportlab.rl_config.warnOnMissingFontGlyphs = 0 from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont import copy pdfmetrics.registerFont(TTFont('zhenhei', 'D:/python_workspace/python_pdf_demo/wqy-zenhei.ttc')) stylesheet= getSampleStyleSheet() styles= copy.deepcopy(stylesheet['Normal']) styles.fontName ='zhenhei' styles.fontSize = 20 return styles from reportlab.platypus import * from reportlab.lib.styles import getSampleStyleSheet from reportlab.rl_config import defaultPageSize from reportlab.lib.units import inch from reportlab.lib.pagesizes import * #from reportlab.lib.utils import * from reportlab.lib.units import mm styles=init_config() PAGE_HEIGHT=defaultPageSize[1] PAGE_WIDTH=defaultPageSize[0] Title = "Hello world" pageinfo = "platypus example" def myFirstPage(canvas,doc): canvas.saveState() canvas.setFont('zhenhei',16) canvas.drawCentredString(PAGE_HEIGHT/2, PAGE_HEIGHT-108, Title) canvas.setFont('zhenhei',9) canvas.drawString((PAGE_WIDTH/2)-20,10,u"首页") canvas.restoreState() def myLaterPages(canvas, doc): canvas.saveState() canvas.setFont('zhenhei', 9) canvas.drawString((PAGE_WIDTH/2)-20,10,u"页码:%d 页" % (doc.page)) canvas.restoreState() def go(): doc = SimpleDocTemplate("phello.pdf",pagesize=A4) #Story = [Spacer(1,2*inch)] #style = styles["Normal"] i=0 I=Image("logo.jpg") I.drawHeight = 1*inch*I.drawHeight / I.drawWidth I.drawWidth = 1*inch print doc.allowSplitting Story=[] for i in range(10): Story.append(I) Story.append(PageBreak()) #doc.build(Story) doc.build(Story, onFirstPage=myFirstPage, onLaterPages=myLaterPages) '''for i in range(100): I = Image("logo.jpg") #print dir(I) #vl=getImageData('logo.jpg') #print vl #I.drawWidth= #I.drawHeight=str(I.imageHeight)+'px' bogustext=(u"测试数字:%s."%i) p = Paragraph(bogustext, styles) Story.append(p) Story.append(I) Story.append(Spacer(1,0.2*inch)) doc.build(Story, onFirstPage=myFirstPage, onLaterPages=myLaterPages) print i''' if __name__ == "__main__": # init_config() go()
转自:http://basiccoder.com/tag/python
http://blog.csdn.net/xto/article/details/5403902
相关文章推荐
- python与reportlab类库技术用例-pdf报表1
- python与reportlab类库技术用例-pdf报表1
- 学习利用ReportLab生成PDF报表 -- 准备工作及Demo
- 用Java的iText实现PDF报表 (2007-10-31 17:23:51| 分类: java 技术)
- 学习利用ReportLab生成PDF报表 -- RML基础(The Basics)
- 报表技术之PDF格式报表生成 (IText)
- JasperReport报表技术导出PDF报表(使用IReport设计工具 )
- 学习利用ReportLab生成PDF报表 -- 图表
- reportlab 库生成带有表格的PDF报表文件
- 报表技术之PDF格式报表生成 (JasperResport)
- 模板PDF报表导出的技术准备
- C#技术分享【Word转换成图片和PDF——2种方案】
- C#技术分享【PDF转换成图片——13种方案】(2013-07-25重新整理) .
- 水晶报表技术(7)——如何在.Net Web应用中使用水晶报表2
- 软件测试中的测试用例复用技术
- SQL查询相关技术-3.更改显示报表行项目
- 在.NET中利用FORMULA ONE实现动态报表技术(二)
- asp.net使用itextsharp.dll类库导出pdf文件
- [58] 测试技术常见的十一种问题之六:功能测试用例需要详细到什么程度才是合格的?
- 让技术人员看得懂的流程(2)——用例模型