feat: add dvisvgm

This commit is contained in:
C4illin
2025-06-03 17:58:43 +02:00
parent 6af1e8f326
commit 625e1a51f6
5 changed files with 63 additions and 7 deletions

52
src/converters/dvisvgm.ts Normal file
View File

@@ -0,0 +1,52 @@
import { execFile } from "node:child_process";
export const properties = {
from: {
images: ["dvi", "xdv", "pdf", "eps"],
},
to: {
images: ["svg", "svgz"],
},
};
export function convert(
filePath: string,
fileType: string,
convertTo: string,
targetPath: string,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
options?: unknown,
): Promise<string> {
const inputArgs: string[] = [];
if (fileType === "eps") {
inputArgs.push("--eps");
}
if (fileType === "pdf") {
inputArgs.push("--pdf");
}
if (convertTo === "svgz") {
inputArgs.push("-z");
}
return new Promise((resolve, reject) => {
execFile(
"dvisvgm",
[...inputArgs, filePath, "-o", targetPath],
(error, stdout, stderr) => {
if (error) {
reject(`error: ${error}`);
}
if (stdout) {
console.log(`stdout: ${stdout}`);
}
if (stderr) {
console.error(`stderr: ${stderr}`);
}
resolve("Done");
},
);
});
}

View File

@@ -12,6 +12,7 @@ import { convert as convertCalibre, properties as propertiesCalibre } from "./ca
import { convert as convertLibheif, properties as propertiesLibheif } from "./libheif";
import { convert as convertPotrace, properties as propertiesPotrace } from "./potrace";
import { convert as convertImagemagick, properties as propertiesImagemagick } from "./imagemagick";
import { convert as convertDvisvgm, properties as propertiesDvisvgm } from "./dvisvgm";
// This should probably be reconstructed so that the functions are not imported instead the functions hook into this to make the converters more modular
@@ -72,6 +73,10 @@ const properties: Record<
properties: propertiesPandoc,
converter: convertPandoc,
},
dvisvgm: {
properties: propertiesDvisvgm,
converter: convertDvisvgm,
},
imagemagick: {
properties: propertiesImagemagick,
converter: convertImagemagick,