当前位置: 首页 > wzjs >正文

家乡网页设计论文遵义网站seo

家乡网页设计论文,遵义网站seo,建设春风摩托车官方网站,公司网页怎么设计reportlab模块----操作PDF文件 一. 安装模块二. reportlab相关介绍三. 扩展canvas类四. 水平写入完整代码五. 垂直写入完整代码 一. 安装模块 pip install reportlab二. reportlab相关介绍 # 1. letter 生成A4纸张尺寸 from reportlab.lib.pagesizes import letter print(let…

reportlab模块----操作PDF文件

  • 一. 安装模块
  • 二. reportlab相关介绍
  • 三. 扩展canvas类
  • 四. 水平写入完整代码
  • 五. 垂直写入完整代码

一. 安装模块

pip install reportlab

二. reportlab相关介绍

# 1. letter 生成A4纸张尺寸
from reportlab.lib.pagesizes import letter
print(letter)    # (612.0, 792.0)  X轴大小,Y轴大小# 2. TTFont 设置字体
from reportlab.pdfbase import pdfmetrics        # 注册字体方法
from reportlab.pdfbase.ttfonts import TTFont	# 获取字体类
pdfmetrics.registerFont(TTFont('song', 'simsun.ttc'))# 3. reportlab自带的颜色库
from reportlab.lib import colors# 4. Canvas画布,相当于工作区
from reportlab.pdfgen import canvas
canvas.Canvas('新PDF文件名称.pdf', pagesize=letter)  # letter=A4纸大小# 5. 设置字体
c = canvas.Canvas(filename, pagesize=letter)
c.setFont('song', 12)  # 参数1:已注册字体名称,参数2:字体大小# 6. TableStyle 给表格设置样式
tab_style = TableStyle([('FONTNAME', (0, 0), (-1, 0), 'song-Bold', 12),		 # 表头字体('TOPPADDING', (0, 1), (-1, -1), 1),				 # 表头顶部填充('BOTTOMPADDING', (0, 0), (-1, 0), 1),				 # 表头底部填充('BACKGROUND', (0, 0), (-1, 0), colors.grey),        # 表头背景色('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),   # 表头文字颜色('ALIGN', (0, 0), (-1, -1), 'CENTER'),               # 单元格文本居中('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),              # 单元格文本垂直居中("FONT", (0, 0), (-1, -1), 'song', 8),               # 单元格字体('BACKGROUND', (0, 1), (-1, -1), colors.beige),      # 行背景色('BOX', (0, 0), (-1, -1), 0.5, colors.black),        # 表格边框颜色('INNERGRID', (0, 0), (-1, -1), 0.5, colors.black),  # 表格单元格颜色
])
# ('FONTNAME', (0,     0),     (-1,    0),     'song-Bold', 12)
#   样式名称,   (开始列,开始行), (结束列, 结束行), 字体,         字体大小)   对应关系# 7. Table 绘制表格
# Table(数据,style=样式,colWidths=[列宽],rowHeights=[行高])
table_data= [('姓名', '性别', '年龄', '民族'),('张三', '男', 20, '汉'),('李四', '男', 21, '汉'),('王小小', '女', 18, '汉'),
]
colWidths = [20, 15, 13, 15]
rowHeights = [29]*len(table_data)
x = 30
y = 600
table1 = Table(table_data, style=table_style, colWidths=colWidths, rowHeights=rowHeights)
table1.wrapOn(self, letter[0], letter[1]) 
table1.drawOn(self, x, y)  # 起始点(x,y)# 8. 添加图片
filepath = 'd:\images\tttt.png'
image = ImageReader(filepath)
c.drawImage(image, x, y, width=120, height=60)  
# 起始点(x,y) width=图片宽度,height=高度# 9. 添加文本
c.drawString(x, y, text) # 起始点(x,y)# 10. 垂直写入内容的 语法糖
def translate(func):def wrapper(*args, **kwargs):ox = letter[0] / 2oy = letter[1] / 2args[0].saveState()args[0].translate(ox, oy)   # 将中心点设置为工作区原点args[0].rotate(90)			# 然后按照原点顺时针旋转90度func(args[0], *args[1:], **kwargs)args[0].restoreState()return wrapper

三. 扩展canvas类

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.platypus import Table, TableStyle
from reportlab.lib import colors
from reportlab.lib.utils import ImageReader# 水平写入扩展
class PDFCanvas(canvas.Canvas):FONTS_DIR = r"D:\fonts"font_path = os.path.join(FONTS_DIR, 'simsun.ttc')pdfmetrics.registerFont(TTFont('song', font_path))def __init__(self, filename, **kwargs):super().__init__(filename, **kwargs)def draw_image(self, filename, **kwargs):IMAGES_DIR = r'C:\下载图片'filepath = os.path.join(IMAGES_DIR, filename)x = kwargs.get('x', 20)                                 # x轴位置y = kwargs.get('y', 756)                                # y轴位置width = kwargs.get('width', 48)                         # 图片宽度height = kwargs.get('height', 18)image = ImageReader(filepath)self.drawImage(image, x, y, width=width, height=height)def draw_text(self, text, **kwargs):x = kwargs.get('x', None)y = kwargs.get('y', None)font = kwargs.get('font', 'song')font_size = kwargs.get('font_size', 12)self.setFont(font, font_size)text_width = self.stringWidth(text, font, font_size)x = x if x else (letter[0] - text_width) / 2self.drawString(x, y, text)def draw_table(self, table_data, **kwargs):title = kwargs.get('title', '')if title:table_data = [(title,), *table_data]x = kwargs.get('x', 30)  # 表格X轴位置y = kwargs.get('y', 650)  # 表格Y轴位置colWidths = kwargs.get('colWidths', 120)table_style = kwargs.get('table_style', tab_style)  # 表格样式table_h = Table(table_data, style=table_style, colWidths=colWidths, rowHeights=[29]*len(table_data))table_h.wrapOn(self, letter[0], letter[1])table_h.drawOn(self, x, y)# 垂直写入扩展
def translate(func):def wrapper(*args, **kwargs):ox = letter[0] / 2oy = letter[1] / 2args[0].saveState()args[0].translate(ox, oy)   # 将中心点设置为工作区原点args[0].rotate(90)			# 然后按照原点顺时针旋转90度func(args[0], *args[1:], **kwargs)args[0].restoreState()return wrapperclass PDFCanvas(canvas.Canvas):font_path = os.path.join(FONTS_DIR, 'simsun.ttc')pdfmetrics.registerFont(TTFont('song', font_path))def __init__(self, filename, **kwargs):super().__init__(filename, **kwargs)@translatedef draw_image(self, filename, **kwargs):IMAGES_DIR = r'C:\下载图片'filepath = os.path.join(IMAGES_DIR, filename)x = kwargs.get('x', 20)                                 # x轴位置y = kwargs.get('y', 756)                                # y轴位置width = kwargs.get('width', 48)                         # 图片宽度height = kwargs.get('height', 18)                       # 图像路径x1 = -(letter[1] / 2 - y)y = letter[0] / 2 - ximage = ImageReader(filepath)self.drawImage(image, x1, y, width=width, height=height)@translatedef draw_text(self, text, **kwargs):x = kwargs.get('x', 20)y = kwargs.get('y', None)font = kwargs.get('font', 'song')font_size = kwargs.get('font_size', 12)self.setFont(font, font_size)text_width = self.stringWidth(text, font, font_size)x1 = -(letter[1] / 2 - y) if y else -int(text_width / 2)y = letter[0] / 2 - xself.drawString(x1, y, text)@translatedef draw_table(self, table_data, **kwargs):title = kwargs.get('title', '')if title:table_data = [(title,), *table_data]x = kwargs.get('x', 30)  # 表格X轴位置y = kwargs.get('y', 650)  # 表格Y轴位置colWidths = kwargs.get('colWidths', 120)table_style = kwargs.get('table_style', tab_style)  # 表格样式x1 = -(letter[1] / 2 - y)y = letter[0] / 2 - xtable1 = Table(table_data, style=table_style, colWidths=colWidths, rowHeights=[29]*len(table_data))table1.wrapOn(self, letter[0], letter[1])table1.drawOn(self, x1, y)

四. 水平写入完整代码

import os
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.platypus import Table, TableStyle
from reportlab.lib import colors
from reportlab.lib.utils import ImageReader# 水平写入内容
tab_style = TableStyle([('FONTNAME', (0, 0), (-1, 0), 'song-Bold', 12),		 # 表头字体('TOPPADDING', (0, 1), (-1, -1), 1),				 # 表头顶部填充('BOTTOMPADDING', (0, 0), (-1, 0), 1),				 # 表头底部填充('BACKGROUND', (0, 0), (-1, 0), colors.grey),        # 表头背景色('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),   # 表头文字颜色('ALIGN', (0, 0), (-1, -1), 'CENTER'),               # 单元格文本居中('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),              # 单元格文本垂直居中("FONT", (0, 0), (-1, -1), 'song', 8),               # 单元格字体('BACKGROUND', (0, 1), (-1, -1), colors.beige),      # 行背景色('BOX', (0, 0), (-1, -1), 0.5, colors.black),        # 表格边框颜色('INNERGRID', (0, 0), (-1, -1), 0.5, colors.black),  # 表格单元格颜色
])class PDFCanvas(canvas.Canvas):FONTS_DIR = r"D:\fonts"font_path = os.path.join(FONTS_DIR, 'simsun.ttc')pdfmetrics.registerFont(TTFont('song', font_path))def __init__(self, filename, **kwargs):super().__init__(filename, **kwargs)def draw_image(self, filename, **kwargs):IMAGES_DIR = r'C:\下载图片'filepath = os.path.join(IMAGES_DIR, filename)x = kwargs.get('x', 20)                                 # x轴位置y = kwargs.get('y', 756)                                # y轴位置width = kwargs.get('width', 48)                         # 图片宽度height = kwargs.get('height', 18)image = ImageReader(filepath)self.drawImage(image, x, y, width=width, height=height)def draw_text(self, text, **kwargs):x = kwargs.get('x', None)y = kwargs.get('y', None)font = kwargs.get('font', 'song')font_size = kwargs.get('font_size', 12)self.setFont(font, font_size)text_width = self.stringWidth(text, font, font_size)x = x if x else (letter[0] - text_width) / 2self.drawString(x, y, text)def draw_table(self, table_data, **kwargs):title = kwargs.get('title', '')if title:table_data = [(title,), *table_data]x = kwargs.get('x', 30)  # 表格X轴位置y = kwargs.get('y', 650)  # 表格Y轴位置colWidths = kwargs.get('colWidths', 120)table_style = kwargs.get('table_style', tab_style)  # 表格样式table_h = Table(table_data, style=table_style, colWidths=colWidths, rowHeights=[29]*len(table_data))table_h.wrapOn(self, letter[0], letter[1])table_h.drawOn(self, x, y)if __name__ == '__main__':c = PDFCanvas('水平写入.pdf', pagesize=letter)image_name = '123.png'c.draw_image(image_name, x=70, y=400, width=320, height=240)text1 = '我现在需要回答用户关于“reportlab letter”的问题'c.draw_text(text1,  y=700, font_size=16)table1 = [('姓名', '性别', '年龄', '民族'),('张三', '男', 20, '汉'),('李四', '男', 21, '汉'),('王小小', '女', 18, '汉'),]c.draw_table(table1, x=100, y=200, colWidths=[80, 80, 80, 80])c.save()

在这里插入图片描述

五. 垂直写入完整代码

import os
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.platypus import Table, TableStyle
from reportlab.lib import colors
from reportlab.lib.utils import ImageReader# 垂直写入内容
def translate(func):def wrapper(*args, **kwargs):ox = letter[0] / 2oy = letter[1] / 2args[0].saveState()args[0].translate(ox, oy)   # 将中心点设置为工作区原点args[0].rotate(90)			# 然后按照原点顺时针旋转90度func(args[0], *args[1:], **kwargs)args[0].restoreState()return wrappertab_style = TableStyle([('FONTNAME', (0, 0), (-1, 0), 'song-Bold', 12),		 # 表头字体('TOPPADDING', (0, 1), (-1, -1), 1),				 # 表头顶部填充('BOTTOMPADDING', (0, 0), (-1, 0), 1),				 # 表头底部填充('BACKGROUND', (0, 0), (-1, 0), colors.grey),        # 表头背景色('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),   # 表头文字颜色('ALIGN', (0, 0), (-1, -1), 'CENTER'),               # 单元格文本居中('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),              # 单元格文本垂直居中("FONT", (0, 0), (-1, -1), 'song', 8),               # 单元格字体('BACKGROUND', (0, 1), (-1, -1), colors.beige),      # 行背景色('BOX', (0, 0), (-1, -1), 0.5, colors.black),        # 表格边框颜色('INNERGRID', (0, 0), (-1, -1), 0.5, colors.black),  # 表格单元格颜色
])class PDFCanvas(canvas.Canvas):FONTS_DIR = r"D:\fonts"font_path = os.path.join(FONTS_DIR, 'simsun.ttc')pdfmetrics.registerFont(TTFont('song', font_path))def __init__(self, filename, **kwargs):super().__init__(filename, **kwargs)@translatedef draw_image(self, filename, **kwargs):IMAGES_DIR = r'C:\下载图片'filepath = os.path.join(IMAGES_DIR, filename)x = kwargs.get('x', 20)                                 # x轴位置y = kwargs.get('y', 756)                                # y轴位置width = kwargs.get('width', 48)                         # 图片宽度height = kwargs.get('height', 18)                       # 图像路径x1 = -(letter[1] / 2 - y)y = letter[0] / 2 - ximage = ImageReader(filepath)self.drawImage(image, x1, y, width=width, height=height)@translatedef draw_text(self, text, **kwargs):x = kwargs.get('x', 20)y = kwargs.get('y', None)font = kwargs.get('font', 'song')font_size = kwargs.get('font_size', 12)self.setFont(font, font_size)text_width = self.stringWidth(text, font, font_size)x1 = -(letter[1] / 2 - y) if y else -int(text_width / 2)y = letter[0] / 2 - xself.drawString(x1, y, text)@translatedef draw_table(self, table_data, **kwargs):title = kwargs.get('title', '')if title:table_data = [(title,), *table_data]x = kwargs.get('x', 30)  # 表格X轴位置y = kwargs.get('y', 650)  # 表格Y轴位置colWidths = kwargs.get('colWidths', 120)table_style = kwargs.get('table_style', tab_style)  # 表格样式x1 = -(letter[1] / 2 - y)y = letter[0] / 2 - xtable1 = Table(table_data, style=table_style, colWidths=colWidths, rowHeights=[29]*len(table_data))table1.wrapOn(self, letter[0], letter[1])table1.drawOn(self, x1, y)if __name__ == '__main__':c = PDFCanvas('垂直写入.pdf', pagesize=letter)image_name = '123.png'c.draw_image(image_name, x=280, y=100, width=320, height=200)text1 = '我现在需要回答用户关于“reportlab letter”的问题'c.draw_text(text1, x=50, font_size=16)table1 = [('姓名', '性别', '年龄', '民族'),('张三', '男', 20, '汉'),('李四', '男', 21, '汉'),('王小小', '女', 18, '汉'),]c.draw_table(table1, x=400, y=100, colWidths=[80, 80, 80, 80])c.save()

在这里插入图片描述

http://www.dtcms.com/wzjs/323869.html

相关文章:

  • 塘沽网站建设公司新闻头条免费下载安装
  • 淘宝上做网站的生意怎么样网络关键词优化软件
  • 怎样接做网站和软件的活湖南百度推广开户
  • 潍坊网站建设定制百度推广创意范例
  • 网站上的图片怎么做微信平台推广方法
  • 没有专项备案的网站现在做推广的新渠道有哪些
  • 设计成功一个电子商务网站搜索引擎优化seo的英文全称是
  • php做网站图集电商网站seo优化
  • 河北网站设计制作百度站内搜索
  • 西宁商城网站建设公司网站安全检测中心
  • 物流官方网站建设方案搜索引擎优化的概念
  • 有凡客模版怎么建设网站刷关键词排名软件
  • 网站域名的意思百度经验
  • 怎么判断网站开发语言自己做一个网站需要什么
  • 高档网站建设公司做app软件大概多少钱
  • vs2013 做网站跨境电商seo什么意思
  • 建设网站要什么资料百度指数移动版app
  • 信丰网站制作最新国际新闻10条
  • 阿里云申请域名做网站网站优化塔山双喜
  • 网站不做icp备案兰州网站seo诊断
  • 网站建设公司价位西安自助建站
  • 网站设计建议如何注册网站怎么注册
  • 无锡工程建设招标网站新手怎么做电商
  • 橙子建站链接关于网络营销的方法
  • 上海公司做网站想学编程去哪里找培训班
  • 网页设计班级网站用什么做首页长沙网络营销哪家平台专业
  • 公司做网站哪个好域名注册后如何建网站
  • 网站建设策划师百度应用中心
  • wordpress免谷歌seo运营学校
  • 百度收录网站标题为企业推广