aboutsummaryrefslogtreecommitdiffstats
path: root/src/app.nim
diff options
context:
space:
mode:
authorkj_sh6042026-02-21 01:50:03 -0500
committerkj_sh6042026-02-21 01:50:03 -0500
commit34b03a9e0b0028a3bc85fd60a6660ce7ff078441 (patch)
tree3c1a1557b56c0ace344c7920d66d4f7a81115755 /src/app.nim
parent4ea6886a06cef46193f4101d84ebb3dcc7928d84 (diff)
feat: more paper sizes and run prettier on files
Diffstat (limited to 'src/app.nim')
-rw-r--r--src/app.nim30
1 files changed, 28 insertions, 2 deletions
diff --git a/src/app.nim b/src/app.nim
index b321a23..8760584 100644
--- a/src/app.nim
+++ b/src/app.nim
@@ -4,13 +4,30 @@ import std/[asynchttpserver, asyncdispatch, os, osproc, streams, strutils, table
const
AllowedImageExtensions = ["png", "jpg", "jpeg", "gif", "webp", "svg"]
- ValidPaperSizes = ["a4paper", "letterpaper", "legalpaper"]
+ ValidPaperSizes = [
+ "a0paper", "a1paper", "a2paper", "a3paper", "a4paper", "a5paper", "a6paper",
+ "b0paper", "b1paper", "b2paper", "b3paper", "b4paper", "b5paper", "b6paper",
+ "c4paper", "c5paper", "c6paper",
+ "letterpaper", "legalpaper", "executivepaper", "ledgerpaper",
+ "tabloid", "statement", "flsa"
+ ]
ValidMargins = ["0.75in", "1in", "1.25in", "1.5in"]
ValidLineSpacings = ["1", "1.5", "2"]
+ CustomPaperDimensions = [
+ ("tabloid", "11in", "17in"),
+ ("statement", "5.5in", "8.5in"),
+ ("flsa", "8.5in", "13in"),
+ ]
const
AppName = "likha-pdf"
+proc lookupCustomPaper(name: string): tuple[width: string, height: string] =
+ for (paperName, w, h) in CustomPaperDimensions:
+ if paperName == name:
+ return (width: w, height: h)
+ (width: "", height: "")
+
proc baseDir(): string {.inline.} =
getAppDir()
@@ -253,7 +270,6 @@ proc runPandoc(sourceMarkdown: string; outputPath: string; paperSize: string; ma
"--from", "markdown+emoji+hard_line_breaks",
"--pdf-engine=lualatex",
"--template", latexTemplatePath(),
- "-V", "papersize=" & paperSize,
"-V", "margin=" & margin,
"-V", "mainfont=" & mainFont,
"-V", "linespacing=" & lineSpacing,
@@ -261,6 +277,16 @@ proc runPandoc(sourceMarkdown: string; outputPath: string; paperSize: string; ma
"-o", outputPath
]
+ let dims = lookupCustomPaper(paperSize)
+ if dims.width.len > 0:
+ args.add("-V")
+ args.add("paperwidth=" & dims.width)
+ args.add("-V")
+ args.add("paperheight=" & dims.height)
+ else:
+ args.add("-V")
+ args.add("papersize=" & paperSize)
+
if not showPageNumbers:
args.add("-V")
args.add("hidepages=true")