|
|
|
@@ -1,6 +1,6 @@ |
|
|
|
const fs = require("fs"); |
|
|
|
const path = require("path"); |
|
|
|
const { spawn } = require("child_process"); |
|
|
|
const {spawn} = require("child_process"); |
|
|
|
|
|
|
|
function parseCommand(librePath, cmd, convert) { |
|
|
|
let _args = []; |
|
|
|
@@ -12,7 +12,7 @@ function parseCommand(librePath, cmd, convert) { |
|
|
|
|
|
|
|
_args = _args.concat(cmd); |
|
|
|
|
|
|
|
return { _args }; |
|
|
|
return {_args}; |
|
|
|
} |
|
|
|
|
|
|
|
function fileExist(file) { |
|
|
|
@@ -27,9 +27,22 @@ function fileExist(file) { |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
const getFileThatExist = async (...files) => { |
|
|
|
for (const file of files) { |
|
|
|
if (file && await fileExist(file) === true) { |
|
|
|
return file; |
|
|
|
} |
|
|
|
} |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
const filesExist = (...files) => { |
|
|
|
return Promise.resolve(!!getFileThatExist(...files)); |
|
|
|
} |
|
|
|
|
|
|
|
function run(libreOfficeBin, cmd, convert) { |
|
|
|
return new Promise((resolve, reject) => { |
|
|
|
const { _args } = parseCommand(libreOfficeBin, cmd, convert); |
|
|
|
const {_args} = parseCommand(libreOfficeBin, cmd, convert); |
|
|
|
let _cmd = libreOfficeBin; |
|
|
|
|
|
|
|
if (convert === "img") { |
|
|
|
@@ -55,15 +68,17 @@ function run(libreOfficeBin, cmd, convert) { |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
exports.convert = function ({ |
|
|
|
libreofficeBin, |
|
|
|
sourceFile, |
|
|
|
outputDir, |
|
|
|
img, |
|
|
|
imgExt, |
|
|
|
reSize, |
|
|
|
density, |
|
|
|
}) { |
|
|
|
exports.convert = async ({ |
|
|
|
libreofficeBin, |
|
|
|
libreofficeBins, |
|
|
|
sourceFile, |
|
|
|
outputDir, |
|
|
|
img, |
|
|
|
imgExt, |
|
|
|
reSize, |
|
|
|
density, |
|
|
|
disableExtensionCheck |
|
|
|
}) => { |
|
|
|
const baseFileName = path.basename(sourceFile); |
|
|
|
const outputFile = baseFileName.replace(/\.[^.]+$/, ".pdf"); |
|
|
|
|
|
|
|
@@ -100,15 +115,28 @@ exports.convert = function ({ |
|
|
|
sourceFile, |
|
|
|
`${outputDir}${outputImg}`, |
|
|
|
]; |
|
|
|
const libreOfficeBins = [ |
|
|
|
libreofficeBin, |
|
|
|
...(Array.isArray(libreofficeBins) ? libreofficeBins : []) |
|
|
|
|
|
|
|
]; |
|
|
|
if (!libreofficeBin) { |
|
|
|
libreOfficeBins.push(path.resolve("C:\\\\Program Files\\\\LibreOffice\\\\program\\\\soffice.exe")); |
|
|
|
libreOfficeBins.push(path.resolve("C:\\\\Program Files (x86)\\\\LibreOffice\\\\program\\\\soffice.exe")); |
|
|
|
libreOfficeBins.push(path.resolve("C:\\\\Program Files (x86)\\\\LIBREO~1\\\\program\\\\soffice.exe")); |
|
|
|
libreOfficeBins.push(path.resolve("/usr/bin/libreoffice")); |
|
|
|
libreOfficeBins.push(path.resolve("/usr/bin/soffice")); |
|
|
|
libreOfficeBins.push(path.resolve("/Applications/LibreOffice.app/Contents/MacOS/soffice")); |
|
|
|
} |
|
|
|
|
|
|
|
return fileExist(libreofficeBin).then((binExist) => { |
|
|
|
if (binExist) { |
|
|
|
return fileExist(sourceFile).then((srcExist) => { |
|
|
|
return getFileThatExist(...libreOfficeBins).then((libreofficeBin) => { |
|
|
|
if (libreofficeBin) { |
|
|
|
return filesExist(sourceFile).then((srcExist) => { |
|
|
|
if (srcExist) { |
|
|
|
if (ext === ".pdf") |
|
|
|
return run(libreofficeBin, pdf2Img, "img").then((res) => res); |
|
|
|
|
|
|
|
if (extensions.includes(ext)) { |
|
|
|
if (disableExtensionCheck || extensions.includes(ext)) { |
|
|
|
return run(libreofficeBin, pdf, "pdf").then((pdfRes) => { |
|
|
|
if (pdfRes !== "Error") { |
|
|
|
if (!img) { |