package main import ( "flag" "fmt" "log" ) func main() { inputMd := flag.String("i", "report.md", "Input Markdown file") outputPdf := flag.String("o", "projektarbeit.pdf", "Output PDF file") flag.Parse() config, doc, content, err := ParseMarkdown(*inputMd) if err != nil { log.Fatalf("Error parsing markdown: %v", err) } // Pass 1: Dummy render to collect TOC info dummyRenderer := NewIHKRenderer(config) dummyRenderer.RenderTitlePage() dummyRenderer.RenderTOC() // This is the placeholder dummyRenderer.pageOffset = dummyRenderer.pdf.PageNo() RenderAST(doc, content, dummyRenderer) dummyRenderer.RenderBibliography() dummyRenderer.RenderListOfTables() dummyRenderer.RenderAppendices() // Pass 2: Real render renderer := NewIHKRenderer(config) renderer.tocItems = dummyRenderer.tocItems renderer.tableItems = dummyRenderer.tableItems renderer.RenderTitlePage() renderer.RenderTOC() // Main Content err = RenderAST(doc, content, renderer) if err != nil { log.Fatalf("Error rendering PDF: %v", err) } // 4. Bibliography renderer.RenderBibliography() // List of Tables renderer.RenderListOfTables() // 5. Appendices renderer.RenderAppendices() // 6. Declaration of Authenticity renderer.RenderDeclarationPage() err = renderer.Save(*outputPdf) if err != nil { log.Fatalf("Error saving PDF: %v", err) } fmt.Printf("Successfully generated %s\n", *outputPdf) }