Loading...
Loading...
Professional designer for promotion and review documents that complies with corporate presentation standards. Creates clean, minimalist PPT/PDF documents with 16:9 layout and strategic color application (primary brand orange)
npx skill4agent add huyansheng3/ppt-skills promotion-doc-designer#fc5a1f#fc4807#fca787#fcb59a#3669cd#2960ca#707070#585858#434343#414141#ffffff#f8f8f8#f0f0f0#fbfbfb#fcfcfc#fc5a1f#434343#707070┌─────────────────────────────────────┐
│ [Top Decoration - Light Orange Gradient] │
├─────────────────────────────────────┤
│ │
│ Main Title (#fc5a1f, Large Font) │
│ Subtitle/Author Info (#707070) │
│ │
│ [Optional: Decorative Graphics/Icons] │
│ │
└─────────────────────────────────────┘┌─────────────────────────────────────┐
│ Title (#fc5a1f) │
├─────────────────────────────────────┤
│ 1 [Module Name] 2 [Module Name] │
│ Descriptive Text Descriptive Text │
│ │
│ 3 [Module Name] 4 [Module Name] │
│ Descriptive Text Descriptive Text │
└─────────────────────────────────────┘┌─────────────────────────────────────┐
│ Page Title (#fc5a1f) │
├─────────────────────────────────────┤
│ │
│ ┌───────────────────────────────┐ │
│ │ Content Area (White/Light Gray Background) │ │
│ │ - Text Content │ │
│ │ - Charts │ │
│ │ - Data Visualization │ │
│ └───────────────────────────────┘ │
│ │
└─────────────────────────────────────┘┌─────────────────────────────────────┐
│ Page Title (#fc5a1f) │
├─────────────────────────────────────┤
│ ┌───────────┐ ┌───────────┐ │
│ │ Left Content │ │ Right Content │ │
│ │ (Card 1) │ │ (Card 2) │ │
│ └───────────┘ └───────────┘ │
│ │
│ ┌─────────────────────────────┐ │
│ │ Bottom Summary/Key Points │ │
│ └─────────────────────────────┘ │
└─────────────────────────────────────┘┌─────────────────────────────────────┐
│ Page Title (#fc5a1f) │
├─────────────────────────────────────┤
│ Metric Card Group: │
│ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │ 1.14M │ │ 25% │ │ 400x│ │
│ │ Lines of Code │ │ Streamlined │ │ Volume │ │
│ └──────┘ └──────┘ └──────┘ │
│ │
│ [Chart/Visualization Area] │
└─────────────────────────────────────┘from reportlab.lib.pagesizes import A4
from reportlab.lib.units import inch
from reportlab.pdfgen import canvas
from reportlab.lib.colors import HexColor
# 16:9 page size (in points, 1 point = 1/72 inch)
SLIDE_WIDTH = 10 * inch # approx 25.4 cm
SLIDE_HEIGHT = 5.625 * inch # approx 14.3 cm
# Color definitions
BRAND_ORANGE = HexColor('#fc5a1f')
DARK_ORANGE = HexColor('#fc4807')
LIGHT_ORANGE = HexColor('#fca787')
BLUE = HexColor('#3669cd')
DARK_GRAY = HexColor('#434343')
MEDIUM_GRAY = HexColor('#707070')
LIGHT_GRAY = HexColor('#f8f8f8')
def create_slide(c, title, content_func):
"""Create standard page template"""
# Background
c.setFillColor(HexColor('#ffffff'))
c.rect(0, 0, SLIDE_WIDTH, SLIDE_HEIGHT, fill=1)
# Top title bar
c.setFillColor(BRAND_ORANGE)
c.setFont("Helvetica-Bold", 24)
c.drawString(0.5 * inch, SLIDE_HEIGHT - 0.6 * inch, title)
# Content area
content_func(c)
# Next page
c.showPage()
# Example: Create document
c = canvas.Canvas("promotion_doc.pdf", pagesize=(SLIDE_WIDTH, SLIDE_HEIGHT))
def cover_page(c):
c.setFillColor(BRAND_ORANGE)
c.setFont("Helvetica-Bold", 36)
c.drawCentredString(SLIDE_WIDTH/2, SLIDE_HEIGHT*0.6, "Autumn Promotion Review Report")
c.setFillColor(MEDIUM_GRAY)
c.setFont("Helvetica", 16)
c.drawCentredString(SLIDE_WIDTH/2, SLIDE_HEIGHT*0.45, "Zhang San / Technology Department")
create_slide(c, "", cover_page)
c.save()%%{init: {'theme':'base', 'themeVariables': { 'primaryColor':'#fc5a1f','primaryTextColor':'#fff','primaryBorderColor':'#fc4807','lineColor':'#3669cd','secondaryColor':'#f8f8f8','tertiaryColor':'#fca787'}}}%%
graph LR
A[Requirements Analysis] --> B[Technical Design]
B --> C[Development & Implementation]
C --> D[Testing & Verification]
D --> E[Launch & Deployment]from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.enum.text import PP_ALIGN
from pptx.dml.color import RGBColor
# 16:9 presentation
prs = Presentation()
prs.slide_width = Inches(10)
prs.slide_height = Inches(5.625)
# Color definitions
BRAND_ORANGE = RGBColor(252, 90, 31)
DARK_GRAY = RGBColor(67, 67, 67)
LIGHT_GRAY = RGBColor(248, 248, 248)
# Add cover slide
slide_layout = prs.slide_layouts[6] # Blank layout
slide = prs.slides.add_slide(slide_layout)
# Title
title_box = slide.shapes.add_textbox(
Inches(1), Inches(2),
Inches(8), Inches(1)
)
title_frame = title_box.text_frame
title_frame.text = "Autumn Promotion Review Report"
title_para = title_frame.paragraphs[0]
title_para.font.size = Pt(36)
title_para.font.color.rgb = BRAND_ORANGE
title_para.alignment = PP_ALIGN.CENTER
prs.save('promotion_deck.pptx')def create_profile_page(c):
# Left: Timeline
x_timeline = 1 * inch
y_start = SLIDE_HEIGHT - 1.5 * inch
events = [
("Mar 2020", "An Internet Company", "Frontend Specialist"),
("2015-2020", "A SaaS Company", "Head of Frontend Team"),
("2013-2015", "A Startup", "Co-founder | CTO"),
]
for i, (time, company, role) in enumerate(events):
y = y_start - i * 0.8 * inch
c.setFillColor(BRAND_ORANGE)
c.circle(x_timeline, y, 5, fill=1)
c.setFillColor(DARK_GRAY)
c.setFont("Helvetica", 10)
c.drawString(x_timeline + 0.2 * inch, y, f"{time} {company}")
c.setFillColor(MEDIUM_GRAY)
c.setFont("Helvetica", 9)
c.drawString(x_timeline + 0.2 * inch, y - 0.15 * inch, role)def create_achievement_page(c):
# Metric cards
metrics = [
("1.14M Lines", "Engineering Code", (1*inch, SLIDE_HEIGHT-2*inch)),
("863K Lines", "25% Streamlined", (3*inch, SLIDE_HEIGHT-2*inch)),
("400x", "Volume Compression", (5*inch, SLIDE_HEIGHT-2*inch)),
]
for value, desc, (x, y) in metrics:
# Card background
c.setFillColor(LIGHT_GRAY)
c.roundRect(x, y, 1.5*inch, 1*inch, 10, fill=1)
# Value
c.setFillColor(BRAND_ORANGE)
c.setFont("Helvetica-Bold", 24)
c.drawCentredString(x + 0.75*inch, y + 0.6*inch, value)
# Description
c.setFillColor(MEDIUM_GRAY)
c.setFont("Helvetica", 10)
c.drawCentredString(x + 0.75*inch, y + 0.3*inch, desc)def create_architecture_page(c):
# Use rectangles and arrows to display system architecture
# Keep it simple, avoid overcomplicating
# Example: Three-tier architecture
layers = [
("Business Layer", SLIDE_HEIGHT - 2*inch),
("Application Layer", SLIDE_HEIGHT - 3*inch),
("Data Layer", SLIDE_HEIGHT - 4*inch),
]
for name, y in layers:
c.setFillColor(LIGHT_GRAY)
c.rect(2*inch, y, 6*inch, 0.6*inch, fill=1)
c.setFillColor(DARK_GRAY)
c.setFont("Helvetica", 12)
c.drawCentredString(5*inch, y + 0.25*inch, name)#fc5a1f#ffffff#fc5a1f#3669cd