python学习站 /python_PDF
阅读主题
正文字体
字体大小

06.自定义PDF内容2

本节2482字2025-02-27 19:27:18
"""
author:少校
create Time:2025/2/27 9:22
越努力越幸运
"""
from reportlab.pdfgen.canvas import Canvas
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase.pdfmetrics import registerFont
from reportlab.pdfgen.pdfimages import PDFImage

# 1. 创建画布(创建一个空白的pdf文件)
pdf = Canvas('Files/画布.pdf')

pdf.setFillColorRGB(230/255, 230/255, 250/255, 1)
pdf.rect(0, 0, 600, 900, False, True)

# 2. 添加文字内容
# 设置画布的字体
font1 = TTFont('f1', 'Files/bb.ttf')
font2 = TTFont('f2', 'Files/Aa.ttf')
registerFont(font1)
registerFont(font2)
pdf.setFont('f2', 25)

# 设置画笔的颜色
pdf.setFillColorRGB(0, 191/255, 255/255, 1)

# 设置画布的旋转角度
pdf.rotate(30)

# 添加文字内容
pdf.drawString(200, 200, '你好,Python!')

pdf.rotate(-30)

# 3.添加图片内容
# pdf.drawImage(图片路径, x坐标, y坐标, 宽度, 高度, mask='auto', preserveAspectRatio=True)
# mask='auto'   -  让带透明度的图片透明部分不变黑色
# preserveAspectRatio=True    -  设置图片大小的时候,图片按比例缩放
pdf.drawImage('files/生成一张python和PDF的图片.jpeg', 400, 250, 100, 300, preserveAspectRatio=True)
pdf.drawImage('files/18df8f52fe858d3c288460a2fd3360f7.png', 100, 100, 50, 50, mask='auto', preserveAspectRatio=True)

# 4. 添加图形
# 设置线的颜色
pdf.setStrokeColorRGB(0, 0, 1, 1)
# 设置线的宽度
pdf.setLineWidth(4)

# 1)线段: line(x1, y1, x2, y2)
pdf.line(10, 180, 500, 180)

pdf.setStrokeColorRGB(0, 128/255, 0, 1)
pdf.setLineWidth(2)
pdf.line(50, 50, 50, 600)

# 2)同时画多条线
pdf.setStrokeColorRGB(1, 140/255, 0, 1)
pdf.lines([(20, 0, 20, 10), (20, 30, 20, 40), (0, 20, 10, 20), (30, 20, 40, 20)])

# 3) 画十字线
# cross(x, y, 线长, 空隙大小)
pdf.setStrokeColorRGB(139/255, 69/255, 19/255, 1)
pdf.setLineWidth(1)
pdf.cross(100, 100, 10, 2)

# 4)画网格线
pdf.setStrokeColorRGB(192/255, 192/255, 192/255, 1)
pdf.grid([200, 280, 360, 440, 520], [200, 300, 400])


# 5)贝塞尔曲线
pdf.setStrokeColorRGB(165/255, 42/255, 42/255, 1)
pdf.bezier(100, 400, 200, 550, 350, 380, 460, 600)

# 6)弧线
pdf.setStrokeColorRGB(165/255, 42/255, 42/255, 1)
pdf.arc(100, 100, 150, 150, 90,  extent=90)

# 7)矩形
# pdf.rect(x, y, width, height, 是否有边框, 是否填充)
pdf.setStrokeColorRGB(255/255, 99/255, 71/255, 1)
pdf.setFillColorRGB(245/255,222/255,179/255, 1)
pdf.rect(200, 30, 200, 100, False, True)

# 8)椭圆
pdf.ellipse(0, 0, 200, 100, True, False)

# 9)圆
pdf.setLineWidth(5)
pdf.circle(400, 400, 100, True, False)

# 10)带圆角的矩形
pdf.roundRect(100, 200, 100, 70, 20, True, True)


# 保存
pdf.save()


网友评论

相关作品