Files

62 lines
1.4 KiB
Go

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)
}