addedsperate filters per file category

This commit is contained in:
Jason Fu 2025-06-29 02:34:53 +02:00
parent 78f52c769d
commit 8273a2a6a0

View file

@ -75,48 +75,61 @@ export const properties = {
}, },
}; };
// input/output files parsing method type FileCategories = "text" | "calc";
const filters: Record<string, string> = {
"602": "T602Document", const filters: Record<FileCategories, Record<string, string>> = {
abw: "AbiWord", text: {
csv: "Text", "602": "T602Document",
cwk: "ClarisWorks", abw: "AbiWord",
doc: "MS Word 97", csv: "Text",
docm: "MS Word 2007 XML VBA", doc: "MS Word 97",
docx: "MS Word 2007 XML", docm: "MS Word 2007 XML VBA",
dot: "MS Word 97 Vorlage", docx: "MS Word 2007 XML",
dotx: "MS Word 2007 XML Template", dot: "MS Word 97 Vorlage",
dotm: "MS Word 2007 XML Template", dotx: "MS Word 2007 XML Template",
epub: "EPUB", dotm: "MS Word 2007 XML Template",
fb2: "Fictionbook 2", epub: "EPUB",
fodt: "OpenDocument Text Flat XML", fb2: "Fictionbook 2",
htm: "HTML (StarWriter)", fodt: "OpenDocument Text Flat XML",
html: "HTML (StarWriter)", htm: "HTML (StarWriter)",
hwp: "writer_MIZI_Hwp_97", html: "HTML (StarWriter)",
mcw: "MacWrite", hwp: "writer_MIZI_Hwp_97",
mw: "MacWrite", mcw: "MacWrite",
mwd: "Mariner_Write", mw: "MacWrite",
lwd: "LotusWordPro", mwd: "Mariner_Write",
lrf: "BroadBand eBook", lwd: "LotusWordPro",
odt: "writer8", lrf: "BroadBand eBook",
ott: "writer8_template", odt: "writer8",
pages: "Apple Pages", ott: "writer8_template",
//pdf should differentiate between import and export just leave as default for now pages: "Apple Pages",
psw: "PocketWord File", // pdf: "writer_pdf_import",
rtf: "Rich Text Format", psw: "PocketWord File",
sdw: "StarOffice_Writer", rtf: "Rich Text Format",
stw: "writer_StarOffice_XML_Writer_Template", sdw: "StarOffice_Writer",
sxw: "StarOffice XML (Writer)", stw: "writer_StarOffice_XML_Writer_Template",
tab: "Text", sxw: "StarOffice XML (Writer)",
tsv: "Text", tab: "Text",
txt: "Text", tsv: "Text",
wn: "WriteNow", txt: "Text",
wpd: "WordPerfect", wn: "WriteNow",
wps: "MS Word 97", wpd: "WordPerfect",
wpt: "MS Word 97 Vorlage", wps: "MS Word 97",
wri: "MS_Write", wpt: "MS Word 97 Vorlage",
xhtml: "HTML (StarWriter)", wri: "MS_Write",
zabw: "AbiWord", xhtml: "HTML (StarWriter)",
xml: "OpenDocument Text Flat XML",
zabw: "AbiWord",
},
calc: {},
};
const getFilters = (fileType: string, converto: string) => {
if (fileType in filters.text && converto in filters.text) {
return [filters.text[fileType], filters.text[converto]];
} else if (fileType in filters.calc && converto in filters.calc) {
return [filters.calc[fileType], filters.calc[converto]];
}
return [null, null];
}; };
export function convert( export function convert(
@ -131,19 +144,17 @@ export function convert(
// Build arguments array // Build arguments array
const args: string[] = []; const args: string[] = [];
args.push("--headless"); args.push("--headless");
args.push("--outdir", outputPath); const [inFilter, outFilter] = getFilters(fileType, convertTo);
const inFilter = filters[fileType];
if (inFilter) { if (inFilter) {
args.push(`--infilter="${inFilter}"`); args.push(`--infilter="${inFilter}"`);
} }
const outFilter = filters[convertTo];
if (outFilter) { if (outFilter) {
args.push("--convert-to", `"${convertTo}:${outFilter}"`, filePath); args.push("--convert-to", `${convertTo}:${outFilter}`, "--outdir", outputPath, filePath);
} else { } else {
args.push("--convert-to", convertTo, filePath); args.push("--convert-to", convertTo, "--outdir", outputPath, filePath);
} }
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {