|
1 | | -.. _installing-packages: |
| 1 | +from reportlab.lib.pagesizes import A4 |
| 2 | +from reportlab.pdfgen import canvas |
| 3 | +from reportlab.lib.colors import black, white |
| 4 | +import math |
| 5 | + |
| 6 | +# Путь для сохранения PDF |
| 7 | +pdf_path = "piramida_mafia.pdf" |
| 8 | +c = canvas.Canvas(pdf_path, pagesize=A4) |
| 9 | +width, height = A4 |
| 10 | + |
| 11 | +# Размер стороны треугольника |
| 12 | +side = 150 |
| 13 | +h = side * math.sqrt(3) / 2 |
| 14 | + |
| 15 | +def draw_face(x, y): |
| 16 | + # Вершины треугольника |
| 17 | + points = [(x, y), (x + side, y), (x + side/2, y + h)] |
| 18 | + |
| 19 | + # Рисуем треугольник |
| 20 | + path = c.beginPath() |
| 21 | + path.moveTo(points[0][0], points[0][1]) |
| 22 | + path.lineTo(points[1][0], points[1][1]) |
| 23 | + path.lineTo(points[2][0], points[2][1]) |
| 24 | + path.close() |
| 25 | + c.setFillColor(black) |
| 26 | + c.setStrokeColor(white) |
| 27 | + c.setLineWidth(1) |
| 28 | + c.drawPath(path, stroke=1, fill=1) |
| 29 | + |
| 30 | + # Центр |
| 31 | + cx = sum(p[0] for p in points)/3 |
| 32 | + cy = sum(p[1] for p in points)/3 |
| 33 | + |
| 34 | + # Цифра 1 |
| 35 | + c.setFillColor(white) |
| 36 | + c.setFont("Helvetica-Bold", 32) |
| 37 | + c.drawCentredString(cx, cy, "1") |
| 38 | + |
| 39 | + # Логотип |
| 40 | + c.setFont("Helvetica-Bold", 12) |
| 41 | + c.drawCentredString(cx, cy - 25, "Mafia VIP") |
| 42 | + |
| 43 | +# Размещение 4 граней |
| 44 | +draw_face(200, 400) # нижняя |
| 45 | +draw_face(200, 400 - h) # верхняя |
| 46 | +draw_face(200 - side, 400) # левая |
| 47 | +draw_face(200 + side, 400) # правая |
| 48 | + |
| 49 | +c.showPage() |
| 50 | +c.save() |
| 51 | + |
| 52 | +print(f"Файл сохранён как {pdf_path}").. _installing-packages: |
2 | 53 |
|
3 | 54 | =================== |
4 | 55 | Installing Packages |
|
0 commit comments