forgejo-pdf/modules/setting/pdf.go
codex 1ce1370983
Some checks failed
pdfexport / pdfexport-worker-fixtures (push) Has been cancelled
Add server-side Markdown→PDF export (v0.1)
2025-12-16 17:52:53 +00:00

51 lines
1.6 KiB
Go

// SPDX-License-Identifier: MIT
package setting
import "strings"
// PDF holds server-side configuration for Markdown → PDF export.
//
// NOTE: The worker-facing config surface is represented in services/pdfexport and
// is always marshaled with the exact JSON keys required by the worker contract.
var PDF = struct {
Enabled bool
Determinism string
Timestamp string
Typography string
OrphansWidowsEnforce bool `ini:"ORPHANS_WIDOWS_ENFORCE"`
FooterEnabled bool `ini:"FOOTER_ENABLED"`
Mermaid struct {
Strategy string
Caption bool
}
// ContainerRuntime is the executable used to run the worker container.
// Typical values: docker, podman.
ContainerRuntime string `ini:"CONTAINER_RUNTIME"`
// WorkerImage is the container image reference to run.
WorkerImage string `ini:"WORKER_IMAGE"`
}{
Enabled: false,
Determinism: "strict",
Timestamp: "commit_time",
Typography: "professional",
OrphansWidowsEnforce: true,
FooterEnabled: true,
ContainerRuntime: "podman",
WorkerImage: "localhost/forgejo/pdf-worker:v0.1",
Mermaid: struct{ Strategy string; Caption bool }{Strategy: "balanced", Caption: false},
}
func loadPDFFrom(rootCfg ConfigProvider) {
mustMapSetting(rootCfg, "pdf", &PDF)
// Allow nested mermaid configuration under [pdf.mermaid].
mustMapSetting(rootCfg, "pdf.mermaid", &PDF.Mermaid)
PDF.Determinism = strings.ToLower(PDF.Determinism)
PDF.Timestamp = strings.ToLower(PDF.Timestamp)
PDF.Typography = strings.ToLower(PDF.Typography)
PDF.Mermaid.Strategy = strings.ToLower(PDF.Mermaid.Strategy)
}