Initial commit: added Markdown to IHK Chemnitz PDF converter with core structure and features, including YAML config, Goldmark parser, and PDF renderer.
This commit is contained in:
61
main.go
Normal file
61
main.go
Normal file
@@ -0,0 +1,61 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user