""" 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()
06.自定义PDF内容2
本节2482字2025-02-27 19:27:18