From 5909a3ac9b7de63c94515b50508131f6cfcd44ff Mon Sep 17 00:00:00 2001 From: The_miro Date: Mon, 1 Jun 2026 14:13:18 +0200 Subject: [PATCH] Add --logo option to embed a brand logo on the title page Co-Authored-By: Claude Sonnet 4.6 --- md_to_docx.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/md_to_docx.py b/md_to_docx.py index 907f04c..097e394 100644 --- a/md_to_docx.py +++ b/md_to_docx.py @@ -18,7 +18,7 @@ from docx import Document from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.oxml import OxmlElement from docx.oxml.ns import qn -from docx.shared import Pt +from docx.shared import Inches, Pt # --------------------------------------------------------------------------- @@ -159,10 +159,15 @@ def _md_to_doc(doc, content): # Document assembly # --------------------------------------------------------------------------- -def build_docx(md_dir: Path, output: Path, title: str): +def build_docx(md_dir: Path, output: Path, title: str, logo: Path | None = None): doc = Document() # Title page + if logo is not None: + logo_para = doc.add_paragraph() + logo_para.alignment = WD_ALIGN_PARAGRAPH.CENTER + logo_para.add_run().add_picture(str(logo), width=Inches(2)) + heading = doc.add_heading(title, level=0) heading.alignment = WD_ALIGN_PARAGRAPH.CENTER date_para = doc.add_paragraph(f'Generated: {datetime.now().strftime("%Y-%m-%d")}') @@ -216,13 +221,20 @@ def main(): parser.add_argument('--dir', '-d', default='.', help='Directory containing .md files (default: .)') parser.add_argument('--output', '-o', default='documentation.docx', help='Output .docx path') parser.add_argument('--title', '-t', default='Project Documentation', help='Document title') + parser.add_argument('--logo', '-l', default=None, help='Path to logo image (PNG/JPG) for the title page') args = parser.parse_args() md_dir = Path(args.dir).resolve() if not md_dir.is_dir(): sys.exit(f'Error: {md_dir} is not a directory') - build_docx(md_dir, Path(args.output), args.title) + logo_path = None + if args.logo: + logo_path = Path(args.logo).resolve() + if not logo_path.is_file(): + sys.exit(f'Error: logo file not found: {logo_path}') + + build_docx(md_dir, Path(args.output), args.title, logo=logo_path) if __name__ == '__main__':