Compare commits

...
2 Commits
Author SHA1 Message Date
amitwh a780f2984a Bump version to 1.5.4 for DOCX export fix release 2025-09-22 00:41:05 +05:30
amitwh 0c9961d412 Fix DOCX export functionality
- Enhanced getPandocPath() to check common Windows installation locations
- Improved Pandoc path detection for AppData/Local/Pandoc installation
- Enhanced error reporting with more detailed feedback for export failures
- Added better logging for Pandoc command execution and output
- Fixed issue where DOCX exports would fail silently when Pandoc wasn't in PATH
- Now properly detects Pandoc in standard Windows installation locations
2025-09-22 00:40:27 +05:30
2 changed files with 46 additions and 8 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "pan-converter",
"version": "1.5.3",
"version": "1.5.4",
"description": "Cross-platform Markdown editor and converter using Pandoc",
"main": "src/main.js",
"scripts": {
+45 -7
View File
@@ -6,14 +6,33 @@ const XLSX = require('xlsx');
// Get the system Pandoc path
function getPandocPath() {
// Always use system pandoc - no bundled binaries
// Check common Pandoc installation locations on Windows
const commonPaths = [
'pandoc', // System PATH
path.join(process.env.USERPROFILE || '', 'AppData', 'Local', 'Pandoc', 'pandoc.exe'),
path.join('C:', 'Program Files', 'Pandoc', 'pandoc.exe'),
path.join('C:', 'Program Files (x86)', 'Pandoc', 'pandoc.exe'),
];
// Try each path and return the first one that exists
for (const pandocPath of commonPaths) {
if (pandocPath === 'pandoc') {
// For system PATH, we'll check in checkPandocAvailable()
return pandocPath;
} else if (fs.existsSync(pandocPath)) {
return `"${pandocPath}"`;
}
}
// Fallback to system pandoc
return 'pandoc';
}
// Check if Pandoc is available
function checkPandocAvailable() {
return new Promise((resolve) => {
exec('pandoc --version', (error) => {
const pandocPath = getPandocPath();
exec(`${pandocPath} --version`, (error) => {
resolve(!error);
});
});
@@ -498,16 +517,35 @@ function showExportSuccess(outputFile) {
// Helper function to export with pandoc (general)
function exportWithPandoc(pandocCmd, outputFile, format) {
console.log(`Executing Pandoc command: ${pandocCmd}`);
exec(pandocCmd, (error, stdout, stderr) => {
if (error) {
console.error(`Pandoc error for ${format}:`, error);
dialog.showErrorBox('Export Error',
`Failed to export to ${format.toUpperCase()}:\n${error.message}\n\n` +
`Command used: ${pandocCmd}\n\n` +
`Please ensure Pandoc is properly installed and accessible.`
);
console.error(`Pandoc stderr:`, stderr);
console.error(`Pandoc stdout:`, stdout);
// Provide more specific error messages
let errorMessage = `Failed to export to ${format.toUpperCase()}`;
if (error.message.includes('not found') || error.message.includes('not recognized')) {
errorMessage += '\n\nPandoc is not installed or not found in PATH.';
errorMessage += '\nPlease install Pandoc from: https://pandoc.org/installing.html';
} else if (stderr) {
errorMessage += `\n\nError details: ${stderr}`;
} else {
errorMessage += `\n\nError details: ${error.message}`;
}
errorMessage += `\n\nCommand used: ${pandocCmd}`;
dialog.showErrorBox('Export Error', errorMessage);
} else {
console.log(`Successfully exported to ${format}:`, outputFile);
console.log(`Pandoc stdout:`, stdout);
if (stderr) {
console.warn(`Pandoc stderr (non-fatal):`, stderr);
}
showExportSuccess(outputFile);
}
});