真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

wxPython之如何解決閃爍的問(wèn)題-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)wxPython之如何解決閃爍的問(wèn)題,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、重慶小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了南潯免費(fèi)建站歡迎大家使用!

利用Python生成PDF文件時(shí),對(duì)比了fpdf和reportlab兩個(gè)庫(kù)。fpdf最新更新還是2015年,

另外reportlab的資料網(wǎng)上更多一些。所以選擇使用reportlab。

pdfgen

pdfgen包是生成PDF文檔最底層的接口。一個(gè)pdfgen編程實(shí)質(zhì)是一系列將一個(gè)文檔繪制到連續(xù)頁(yè)面上的操作指南。提供繪制操作的接口對(duì)象是pdfgen canvas。

canvas應(yīng)該被認(rèn)為一張白紙,上面的點(diǎn)用笛卡爾坐標(biāo)來(lái)標(biāo)記。默認(rèn)頁(yè)面的左下角為原點(diǎn)(0,0),此外x軸向右,y軸向上。

示意圖如下:   

wxPython之如何解決閃爍的問(wèn)題

繪制文本

首先演示一個(gè)繪制”hello world!”的PDF文件。

#引入所需要的基本包
from reportlab.pdfgen import canvas
#設(shè)置繪畫(huà)開(kāi)始的位置
def hello(c):
 c.drawString(100, 100, "hello world!")
#定義要生成的pdf的名稱(chēng)
c=canvas.Canvas("hello.pdf")
#調(diào)用函數(shù)進(jìn)行繪畫(huà),并將canvas對(duì)象作為參數(shù)傳遞
hello(c)
#showPage函數(shù):保存當(dāng)前頁(yè)的canvas
c.showPage()
#save函數(shù):保存文件并關(guān)閉canvas
c.save()

運(yùn)行結(jié)果:

wxPython之如何解決閃爍的問(wèn)題

canvas.Canvas構(gòu)造函數(shù)

def __init__(self,filename,
   pagesize=(595.27,841.89),
   bottomup = 1,
   pageCompression=0,
   encoding=rl_config.defaultEncoding,
   verbosity=0
   encrypt=None):

其中:

filename:PDF文件名

pagesize:兩個(gè)數(shù)字的元組。canvas頁(yè)面大小默認(rèn)是A4(國(guó)際標(biāo)準(zhǔn)紙張大?。?,A4不同于美國(guó)標(biāo)準(zhǔn)紙張大小letter。大多數(shù)紙張大小在reportlab.lib.pagesizes。例如:

from reportlab.lib.pagesizes import letter, A4
myCanvas = Canvas('myfile.pdf', pagesize=letter)
width, height = letter #keep for later

bottomup :目前是廢棄的

pageCompression:決定每頁(yè)P(yáng)DF操作流是否被壓縮。默認(rèn)設(shè)為0,不壓縮。因?yàn)閴嚎s會(huì)減慢文件生成過(guò)程。如果每頁(yè)有大量文本和矢量圖形,設(shè)置pageCompression = 1來(lái)壓縮節(jié)省空間。

encoding:決定字體編碼,默認(rèn)值就很好了。

verbosity:決定多長(zhǎng)信息被打印。

encrypted:決定PDF文檔是否加密。

添加字體

下面演示如何添加字體。首先下載微軟雅黑字體。

from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont 
pdfmetrics.registerFont(TTFont('msyh', 'Msyh.ttf'))

解決繪制中文文本問(wèn)題?只要注冊(cè)的字體本身支持中文,就能繪制。canvas默認(rèn)的字體是不支持中文的。

#引入所需要的基本包
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont 
pdfmetrics.registerFont(TTFont('msyh', 'Msyh.ttf')) 
#設(shè)置繪畫(huà)開(kāi)始的位置
def hello(c):
 c.drawString(100, 100, "您好")
#定義要生成的pdf的名稱(chēng)
c=canvas.Canvas("hello.pdf")
#設(shè)置字體
c.setFont("msyh", 8)
#調(diào)用函數(shù)進(jìn)行繪畫(huà),并將canvas對(duì)象作為參數(shù)傳遞
hello(c)
#showPage函數(shù):保存當(dāng)前頁(yè)的canvas
c.showPage()
#save函數(shù):保存文件并關(guān)閉canvas
c.save()

運(yùn)行結(jié)果:

wxPython之如何解決閃爍的問(wèn)題

獲取文本寬度

利用canvas的stringWidth方法獲取文本寬度。

#引入所需要的基本包
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont 
pdfmetrics.registerFont(TTFont('msyh', 'Msyh.ttf')) 
#設(shè)置繪畫(huà)開(kāi)始的位置
def hello(c):
 c.drawString(100, 100, "您好")
 width = c.stringWidth("您好")
 c.drawString(100, 120, "文本寬度:%f"%width)
#定義要生成的pdf的名稱(chēng)
c=canvas.Canvas("hello.pdf")
#設(shè)置字體
c.setFont("msyh", 8)
#調(diào)用函數(shù)進(jìn)行繪畫(huà),并將canvas對(duì)象作為參數(shù)傳遞
hello(c)
#showPage函數(shù):保存當(dāng)前頁(yè)的canvas
c.showPage()
#save函數(shù):保存文件并關(guān)閉canvas
c.save()

運(yùn)行結(jié)果:

wxPython之如何解決閃爍的問(wèn)題

關(guān)于“wxPython之如何解決閃爍的問(wèn)題”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


分享名稱(chēng):wxPython之如何解決閃爍的問(wèn)題-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://weahome.cn/article/dehjsd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部