51 lines
1.6 KiB
Go
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)
|
|
}
|