feat: add chinese font support for pandoc

This commit is contained in:
纹波 2025-12-14 21:26:30 +08:00
parent df3330fdc2
commit c0e1aa524b
3 changed files with 34 additions and 0 deletions

View file

@ -5,6 +5,7 @@ services:
# dockerfile: Debian.Dockerfile
volumes:
- ./data:/app/data
# - /usr/share/fonts/truetype/chinese:/usr/share/fonts/truetype/chinese:ro # mount Chinese fonts from host (optional)
environment: # Defaults are listed below. All are optional.
- ACCOUNT_REGISTRATION=true # true or false, doesn't matter for the first account (e.g. keep this to false if you only want one account)
- JWT_SECRET=aLongAndSecretStringUsedToSignTheJSONWebToken1234 # will use randomUUID() by default
@ -16,5 +17,8 @@ services:
# - HIDE_HISTORY=true # hides the history tab in the web interface, defaults to false
- TZ=Europe/Stockholm # set your timezone, defaults to UTC
# - UNAUTHENTICATED_USER_SHARING=true # for use with ALLOW_UNAUTHENTICATED=true to share history with all unauthenticated users / devices
# - PANDOC_ENABLE_CHINESE_FONT=true # enable Chinese font support for Pandoc PDF/LaTeX conversion
# - PANDOC_CHINESE_FONT_PATH=/usr/share/fonts/truetype/chinese # path to Chinese font directory on host
# - PANDOC_CHINESE_FONT_FAMILY=NotoSansCJK # Chinese font family name
ports:
- 3000:3000

View file

@ -1,5 +1,10 @@
import { execFile as execFileOriginal } from "node:child_process";
import { ExecFileFn } from "./types";
import {
PANDOC_ENABLE_CHINESE_FONT,
PANDOC_CHINESE_FONT_PATH,
PANDOC_CHINESE_FONT_FAMILY
} from "../helpers/env";
export const properties = {
from: {
@ -136,6 +141,24 @@ export function convert(
if (xelatex.includes(convertTo)) {
args.push("--pdf-engine=xelatex");
// Add Chinese font support if enabled
if (PANDOC_ENABLE_CHINESE_FONT) {
// Create a custom LaTeX template for Chinese font support
const chineseFontArgs = [
"-V", `mainfont=${PANDOC_CHINESE_FONT_FAMILY}`,
"-V", "CJKmainfont=" + PANDOC_CHINESE_FONT_FAMILY,
"--variable", "geometry:margin=1in",
"--variable", "fontsize=11pt"
];
// Add font path if specified
if (PANDOC_CHINESE_FONT_PATH) {
chineseFontArgs.push("--variable", `fontdir:${PANDOC_CHINESE_FONT_PATH}`);
}
args.push(...chineseFontArgs);
}
}
args.push(filePath);

View file

@ -23,3 +23,10 @@ export const MAX_CONVERT_PROCESS =
export const UNAUTHENTICATED_USER_SHARING =
process.env.UNAUTHENTICATED_USER_SHARING?.toLowerCase() === "true" || false;
export const PANDOC_ENABLE_CHINESE_FONT =
process.env.PANDOC_ENABLE_CHINESE_FONT?.toLowerCase() === "true" || false;
export const PANDOC_CHINESE_FONT_PATH = process.env.PANDOC_CHINESE_FONT_PATH || "";
export const PANDOC_CHINESE_FONT_FAMILY = process.env.PANDOC_CHINESE_FONT_FAMILY || "SimSun";