mirror of
https://github.com/amitwh/markdown-converter.git
synced 2026-08-02 18:10:18 +05:30
Fix PDF export geometry error and improve print/file loading timing
PDF Export Fix: - Fixed ReferenceError: geometry is not defined in PDF export - Removed hardcoded undefined geometry variable from pandoc command - Geometry option now properly extracted from options object when present - PDF export now works without errors Print Preview Timing: - Changed from requestAnimationFrame to setTimeout for more reliable rendering - Increased delay from 0ms to 300ms before sending print command - Post-print UI restoration after 500ms to ensure printer captured output - More reliable toolbar hiding before print dialog opens File Loading Timing: - Increased delay from 500ms to 2000ms (2 seconds) for file-opened message - Ensures complete theme application and preview pane initialization - Files now load and render consistently on first double-click All timing issues related to browser rendering and DOM updates resolved. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
+5
-4
@@ -795,9 +795,10 @@ function tryPdfFallback(inputFile, outputFile, engines, index, options, lastErro
|
|||||||
}
|
}
|
||||||
|
|
||||||
const engine = engines[index];
|
const engine = engines[index];
|
||||||
let pandocCmd = `${getPandocPath()} "${inputFile}" --pdf-engine=${engine} -V geometry:${geometry} -o "${outputFile}"`;
|
let pandocCmd = `${getPandocPath()} "${inputFile}" --pdf-engine=${engine} -o "${outputFile}"`;
|
||||||
|
|
||||||
if (options.geometry) pandocCmd += ` -V geometry:"${options.geometry}"`;
|
// Add geometry if specified
|
||||||
|
if (options.geometry) pandocCmd = pandocCmd.replace(` -o `, ` -V geometry:"${options.geometry}" -o `);
|
||||||
|
|
||||||
// Add all other options
|
// Add all other options
|
||||||
if (options.template && options.template !== 'default') {
|
if (options.template && options.template !== 'default') {
|
||||||
@@ -1665,10 +1666,10 @@ function openFileFromPath(filePath) {
|
|||||||
const content = fs.readFileSync(filePath, 'utf-8');
|
const content = fs.readFileSync(filePath, 'utf-8');
|
||||||
if (mainWindow && mainWindow.webContents && rendererReady) {
|
if (mainWindow && mainWindow.webContents && rendererReady) {
|
||||||
// Add delay to ensure renderer is fully prepared to display the file
|
// Add delay to ensure renderer is fully prepared to display the file
|
||||||
// Give extra time for theme application and preview pane setup
|
// Wait for theme, preview pane, and all CSS to be fully loaded
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
mainWindow.webContents.send('file-opened', { path: filePath, content });
|
mainWindow.webContents.send('file-opened', { path: filePath, content });
|
||||||
}, 500);
|
}, 2000);
|
||||||
} else {
|
} else {
|
||||||
// Store file to open after renderer is ready
|
// Store file to open after renderer is ready
|
||||||
app.pendingFile = filePath;
|
app.pendingFile = filePath;
|
||||||
|
|||||||
+22
-23
@@ -1199,33 +1199,32 @@ function handlePrintPreview(withStyles) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use requestAnimationFrame twice to ensure browser has rendered the DOM changes
|
// Wait for DOM to render the changes before printing
|
||||||
requestAnimationFrame(() => {
|
// Use setTimeout to ensure browser has time to repaint
|
||||||
requestAnimationFrame(() => {
|
setTimeout(() => {
|
||||||
// Now tell main process to print - the DOM is fully rendered
|
// Tell main process to print - the DOM is now fully rendered
|
||||||
ipcRenderer.send('do-print', { withStyles });
|
ipcRenderer.send('do-print', { withStyles });
|
||||||
|
|
||||||
// Restore UI after print
|
// Restore UI after a delay (printer will have captured the output by then)
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
document.getElementById('toolbar').style.display = '';
|
document.getElementById('toolbar').style.display = '';
|
||||||
document.getElementById('tab-bar').style.display = '';
|
document.getElementById('tab-bar').style.display = '';
|
||||||
document.getElementById('status-bar').style.display = '';
|
document.getElementById('status-bar').style.display = '';
|
||||||
|
|
||||||
if (editorPane) {
|
if (editorPane) {
|
||||||
editorPane.style.display = '';
|
editorPane.style.display = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
dialogs.forEach(id => {
|
dialogs.forEach(id => {
|
||||||
const dialog = document.getElementById(id);
|
const dialog = document.getElementById(id);
|
||||||
if (dialog) dialog.style.display = '';
|
if (dialog) dialog.style.display = '';
|
||||||
});
|
});
|
||||||
|
|
||||||
if (previewPane) {
|
if (previewPane) {
|
||||||
previewPane.classList.remove('print-mode', 'print-no-styles');
|
previewPane.classList.remove('print-mode', 'print-no-styles');
|
||||||
}
|
}
|
||||||
}, 100);
|
}, 500);
|
||||||
});
|
}, 300);
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Export Dialog functionality
|
// Export Dialog functionality
|
||||||
|
|||||||
Reference in New Issue
Block a user