b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

利用Django生成PDF文档

电脑杂谈  发布时间:2019-07-22 06:06:37  来源:网络整理

电话电销crm库开发_stm32库开发实战 怎样_pdflib开发库

利用Django生成PDF文档

本小节说明如何利用Django视图动态生成PDF文档。此功能是由优秀的开源Python PDF库ReportLab实现的。

动态生成PDF文档的好处在于你可以定制PDF文档以实现不同的目标,比如针对不同的用户或者不同的内容进行相关定制。

软件安装后会生成虚拟打印机,任何支持 windows打印功能的程序生成的文件,在打印时只要选择生成的pdfcreator虚拟打印机,就可轻轻松松的转换为pdf文档,并且可以生成 postscript文档、encapsulated postscript 文件等格式。此役过后,克莱成为本赛季联盟单场得分最高的球员、勇士队史第四位单场得到60+的球员(其他三位,威尔特·张伯伦、里克·巴里、乔·福尔克斯,小学生已经处于“憋宝状态”)、联盟近20年来第二位能在3节比赛砍下60+的球员(第一位是科比,05-06赛季常规赛湖人对阵小牛,科比3节62分)。本赛季迄今为止,还没有球队能够拿到8连胜,此前快船在拿到7连胜后输球,勇士将会挑战这一任务,勇士本赛季的进攻运转非常流畅,他们场均能拿到116.8分,联盟第一,场均命中率(49.8%) 以及助攻数(30.8次)也都是联盟第一pdflib开发库,不过,如果勇士想要着眼未来,他们还需要好好演练球队的防守,对阵步行者一战,保罗-乔治缺席会让勇士的防守压力降低不少。

pdflib开发库_stm32库开发实战 怎样_电话电销crm库开发

安装ReprotLab

从可以下载并安装ReportLab库,附带的用户指南说明了安装方法。

可以使用如下指令将ReprotLab库导入Python交互解释器以测试安装情况:

>>> import reportlab

pdflib开发库_电话电销crm库开发_stm32库开发实战 怎样

如果此命令没有输出任何错误则表明安装成功。

使用Django动态生成PDF文档的关键在于明白ReprotLabAPI作用于类文件对象,例如Django的对象就是类文件对象。

下面是一个“Hello World”的例子程序:

from reportlab.pdfgen import canvas
from django.http import HttpResponse
 
defsome_view(request):
# Create the HttpResponse object with the appropriate PDF headers.
response=HttpResponse(mimetype='application/pdf')
response['Content-Disposition']='attachment; filename=somefilename.pdf'
 
# Create the PDF object, using the response object as its "file."
p=canvas.Canvas(response)
 
# Draw things on the PDF. Here's where the PDF generation happens.
# See the ReportLab documentation for the full list of functionality.
p.drawString(100,100,"Hello world.")
 
# Close the PDF object cleanly, and we're done.
p.showPage()
p.save()
return response

pdflib开发库_stm32库开发实战 怎样_电话电销crm库开发

以上代码和注释基本可以自解释,只有以下几点需要说明一下:

· 类文件对象response被指定了一个特殊的MIME类型——“application/pdf”。浏览器据此便知道这是一个PDF文档,而不是一个HTML文件。如果没有这个信息,浏览器很可能会以HTML形式输出文件,造成页面显示十分难看。

· response还有一个附加的Content-Disposition首部,其中包含了PDF文件的名称。此文件名是任意的,你可以随意指定。浏览器将在“另存为”对话框等地方用到它。

· Content-Disposition首部在本例中以“attachment;”起始。这一语句强制浏览器显示一个对话框来提示并请求确认如何处理当前文档,无论是否有其他的默认配置。如果你像下面所示的代码那样不写这个起始语句,则浏览器会使用默认程序或插件来处理PDF文档:

stm32库开发实战 怎样_电话电销crm库开发_pdflib开发库

response['Content-Disposition']='filename=somefilename.pdf'

· 调用ReportLab API很简单,只需要将response作为第一个参数传递给canvas.Canvas。Canvas类需要一个类文件对象,而response作为对象正符合这个要求。

· 注意,所有后续的生成PDF的方法都以PDF对象(在本例中即为p)而不是response对象调用。

· 最后,对PDF文件对象调用函数showPage()和save()是很重要的。

初次使用会有设置向导,根据提示进行相应的偏好设置,可以看到在自动备份中,我们是可以对、图片、视频、音乐以及文档五类进行备份操作,但是在主界面是不能手动对进行备份的,主界面的设计比较简单,没有过多的复杂操作。所以自然特别关注了一些csipsimple,linphone的最大优势在于全平台支持,改过他的库,但是质量上还是欠火候,android,命名和缩进都觉得乱,直接用doxygen生成文档,ios,还是ui都胜过其他那几个开源,winphone,代码的设计非常赞,有些情有独钟吧,mac osx,添加过g,然后用swig生成的接口,总之咱非常喜欢pjsip的简洁,主要基于csipsimple 做了很多改进。linux提供了tee命令用于完成上述程序的操作pdflib开发库,在tee函数的帮助文档里也有一个例子来完成上述操作,可用man 2 tee来查看。

from cStringIO import StringIO
from reportlab.pdfgen import canvas
from django.http import HttpResponse
 
defsome_view(request):
# Create the HttpResponse object with the appropriate PDF headers.
response=HttpResponse(mimetype='application/pdf')
response['Content-Disposition']='attachment; filename=somefilename.pdf'
 
buffer=StringIO()
 
# Create the PDF object, using the StringIO object as its "file."
p=canvas.Canvas(buffer)
 
# Draw things on the PDF. Here's where the PDF generation happens.
# See the ReportLab documentation for the full list of functionality.
p.drawString(100,100,"Hello world.")
 
# Close the PDF object cleanly.
p.showPage()
p.save()
 
# Get the value of the StringIO buffer and write it to the response.
pdf=buffer.getvalue()
buffer.close()
response.write(pdf)
return response

在上个例子中我们可以生成任意的字符串并且打印出来,那为什么我们不能生成一些按照既定格式定义的代码并且写入文件呢。还要注意更改按键时要与文件内的按键名称格式一致,如一般按键必须为button_x(x为任意按键),小键盘区数字键必须为button_numpadx(x为任意按键),鼠标左中右键为button_mouse_1/2/3等,大部分按键格式直接可以在文件内找到,大家可以以此类推。pccad集成了多种数据接口,不仅可以利用各种现有资源(利用:提取标准件、提取标题栏、调用词句库、通用资源、通用编码、编码解析、天河工程计算器、读入文本文件、读入dwg文件、天河通用导入),生成明细表,绘制表格等,还可以通过导出文本文件和天河通用导出,导出各种类型(access、txt、excel、oracle、sql servr等)的数据。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-114802-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      每日福利
      热点图片
      拼命载入中...