62 lines
1.4 KiB
Go
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)
|
|
}
|