feat(branding): embed slohmaier logo on cover + running page header
- branding/: light + dark logo SVG sources and 1600x452 PNG renders - build_word_template.py: replace [LOGO] placeholder with add_picture on cover (7 cm wide, right-aligned) plus a 2.8 cm logo as a second paragraph in the running page header so derived pandoc-generated templates inherit the branding on every page Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 37 KiB |
@@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
slohmaier.com Dokument-Logo (Dark) — Braille-Icon + Wortmarke
|
||||
mit Accent-Border. Für Word/PDF-Letterheads (280–320 px Breite).
|
||||
-->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 780 220" width="780" height="220"
|
||||
role="img" aria-label="slohmaier">
|
||||
<defs>
|
||||
<radialGradient id="bgGradient" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0%" stop-color="#2a3f5f"/>
|
||||
<stop offset="100%" stop-color="#1a2330"/>
|
||||
</radialGradient>
|
||||
<radialGradient id="dotGradient" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0%" stop-color="#ffffff" stop-opacity="1"/>
|
||||
<stop offset="100%" stop-color="#c8dcff" stop-opacity="0.6"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="wmDark" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#D4A574"/>
|
||||
<stop offset="100%" stop-color="#5BA5D6"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<rect x="10" y="10" width="760" height="200" rx="10" ry="10"
|
||||
fill="#21273a" stroke="#D4A574" stroke-width="3"/>
|
||||
|
||||
<!-- Icon (2E) — 160×160 bei (30,30), scale 160/512 = 0.3125 -->
|
||||
<g transform="translate(30 30) scale(0.3125)">
|
||||
<rect x="18" y="18" width="476" height="476" rx="92" ry="92" fill="#ffffff"/>
|
||||
<rect x="30" y="30" width="452" height="452" rx="80" ry="80" fill="url(#bgGradient)"/>
|
||||
<circle cx="94" cy="256" r="36" fill="url(#dotGradient)"/>
|
||||
<circle cx="94" cy="371" r="36" fill="url(#dotGradient)"/>
|
||||
<circle cx="184" cy="141" r="36" fill="url(#dotGradient)"/>
|
||||
<circle cx="329" cy="141" r="36" fill="url(#dotGradient)"/>
|
||||
<circle cx="329" cy="256" r="36" fill="url(#dotGradient)"/>
|
||||
<circle cx="329" cy="371" r="36" fill="url(#dotGradient)"/>
|
||||
</g>
|
||||
|
||||
<text x="220" y="148" font-family="Aptos, Inter, Helvetica Neue, Arial, sans-serif"
|
||||
font-size="110" font-weight="700" letter-spacing="-2">
|
||||
<tspan fill="url(#wmDark)">sl</tspan><tspan fill="#eaedf3">ohmaier</tspan>
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 36 KiB |
@@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
slohmaier.com Dokument-Logo (Light) — Braille-Icon + Wortmarke
|
||||
mit Accent-Border. Für Word/PDF-Letterheads (280–320 px Breite).
|
||||
-->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 780 220" width="780" height="220"
|
||||
role="img" aria-label="slohmaier">
|
||||
<defs>
|
||||
<radialGradient id="bgGradient" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0%" stop-color="#2a3f5f"/>
|
||||
<stop offset="100%" stop-color="#1a2330"/>
|
||||
</radialGradient>
|
||||
<radialGradient id="dotGradient" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0%" stop-color="#ffffff" stop-opacity="1"/>
|
||||
<stop offset="100%" stop-color="#c8dcff" stop-opacity="0.6"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="wmLight" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#5BA5D6"/>
|
||||
<stop offset="100%" stop-color="#D4A574"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<rect x="10" y="10" width="760" height="200" rx="10" ry="10"
|
||||
fill="#ffffff" stroke="#5BA5D6" stroke-width="3"/>
|
||||
|
||||
<!-- Icon (2E) — 160×160 bei (30,30), scale 160/512 = 0.3125 -->
|
||||
<g transform="translate(30 30) scale(0.3125)">
|
||||
<rect x="18" y="18" width="476" height="476" rx="92" ry="92" fill="#ffffff"/>
|
||||
<rect x="30" y="30" width="452" height="452" rx="80" ry="80" fill="url(#bgGradient)"/>
|
||||
<circle cx="94" cy="256" r="36" fill="url(#dotGradient)"/>
|
||||
<circle cx="94" cy="371" r="36" fill="url(#dotGradient)"/>
|
||||
<circle cx="184" cy="141" r="36" fill="url(#dotGradient)"/>
|
||||
<circle cx="329" cy="141" r="36" fill="url(#dotGradient)"/>
|
||||
<circle cx="329" cy="256" r="36" fill="url(#dotGradient)"/>
|
||||
<circle cx="329" cy="371" r="36" fill="url(#dotGradient)"/>
|
||||
</g>
|
||||
|
||||
<text x="220" y="148" font-family="Aptos, Inter, Helvetica Neue, Arial, sans-serif"
|
||||
font-size="110" font-weight="700" letter-spacing="-2">
|
||||
<tspan fill="url(#wmLight)">sl</tspan><tspan fill="#282728">ohmaier</tspan>
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -246,6 +246,11 @@ def build_header_footer(doc, doc_id_placeholder="<DOC-ID>", classification="CONF
|
||||
r3 = header_para.add_run(doc_id_placeholder)
|
||||
r3.font.size = Pt(9)
|
||||
r3.font.color.rgb = RGBColor(0x59, 0x59, 0x59)
|
||||
if LOGO_PATH.exists():
|
||||
logo_para = header.add_paragraph()
|
||||
logo_para.alignment = WD_ALIGN_PARAGRAPH.RIGHT
|
||||
logo_run = logo_para.add_run()
|
||||
logo_run.add_picture(str(LOGO_PATH), width=Cm(2.8))
|
||||
|
||||
# --- Default footer (skipped on cover page) ---
|
||||
footer = section.footer
|
||||
@@ -283,13 +288,21 @@ def build_header_footer(doc, doc_id_placeholder="<DOC-ID>", classification="CONF
|
||||
# Content
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
REPO_ROOT = Path(__file__).resolve().parent.parent
|
||||
LOGO_PATH = REPO_ROOT / "branding" / "logo-doc-light.png"
|
||||
|
||||
|
||||
def add_cover_page(doc):
|
||||
# Top logo placeholder
|
||||
# Top logo (right-aligned, ~7 cm wide)
|
||||
p = doc.add_paragraph()
|
||||
p.alignment = WD_ALIGN_PARAGRAPH.RIGHT
|
||||
r = p.add_run("[LOGO]")
|
||||
r.font.size = Pt(10)
|
||||
r.font.color.rgb = RGBColor(0x80, 0x80, 0x80)
|
||||
if LOGO_PATH.exists():
|
||||
run = p.add_run()
|
||||
run.add_picture(str(LOGO_PATH), width=Cm(7))
|
||||
else:
|
||||
r = p.add_run("[LOGO]")
|
||||
r.font.size = Pt(10)
|
||||
r.font.color.rgb = RGBColor(0x80, 0x80, 0x80)
|
||||
|
||||
# Vertical space
|
||||
for _ in range(8):
|
||||
|
||||
Reference in New Issue
Block a user