mirror of
https://github.com/amitwh/markdown-converter.git
synced 2026-08-02 10:00:17 +05:30
Enhance print menu with preview-only printing options (v1.7.7)
- Added Print submenu to File menu with two print options: * Print Preview (Ctrl+P): Black text, no colors, ink-saving * Print Preview (With Styles): Full colors and styling - Implemented print handler that hides all editor UI and shows only preview - Editor, toolbar, tabs, and status bar hidden during printing - Added comprehensive CSS print stylesheet with: * Smart page breaks for headings, tables, and paragraphs * Optimized formatting for code blocks, lists, and tables * Professional typography (12pt font size, 1.6 line height) * Image optimization and proper link handling * Support for blockquotes, horizontal rules, and other elements - Print-specific CSS classes for styling control - Preview automatically restored after printing Features: - Prints only the rendered markdown preview (not source) - Two print modes: simple (black) and styled (colored) - Native OS print dialogs for all platforms - Professional output formatting with page breaks - Cross-platform support (Windows, macOS, Linux) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
This commit is contained in:
+41
-11
@@ -201,8 +201,17 @@ function createMenu() {
|
||||
{ type: 'separator' },
|
||||
{
|
||||
label: 'Print',
|
||||
accelerator: 'CmdOrCtrl+P',
|
||||
click: () => mainWindow.webContents.send('print-document')
|
||||
submenu: [
|
||||
{
|
||||
label: 'Print Preview',
|
||||
accelerator: 'CmdOrCtrl+P',
|
||||
click: () => mainWindow.webContents.send('print-preview')
|
||||
},
|
||||
{
|
||||
label: 'Print Preview (With Styles)',
|
||||
click: () => mainWindow.webContents.send('print-preview-styled')
|
||||
}
|
||||
]
|
||||
},
|
||||
{ type: 'separator' },
|
||||
{
|
||||
@@ -1157,16 +1166,37 @@ ipcMain.on('set-current-file', (event, filePath) => {
|
||||
currentFile = filePath;
|
||||
});
|
||||
|
||||
// Handle print document
|
||||
ipcMain.on('print-document', (event) => {
|
||||
// Handle print preview
|
||||
ipcMain.on('print-preview', (event) => {
|
||||
if (mainWindow) {
|
||||
// Open native print dialog
|
||||
mainWindow.webContents.print({
|
||||
silent: false,
|
||||
printBackground: true,
|
||||
color: true,
|
||||
margin: { marginType: 'default' }
|
||||
});
|
||||
// Prepare for printing preview only (black text, no colors)
|
||||
mainWindow.webContents.send('prepare-print-preview', false);
|
||||
// Give renderer time to prepare, then print
|
||||
setTimeout(() => {
|
||||
mainWindow.webContents.print({
|
||||
silent: false,
|
||||
printBackground: false,
|
||||
color: true,
|
||||
margin: { marginType: 'default' }
|
||||
});
|
||||
}, 100);
|
||||
}
|
||||
});
|
||||
|
||||
// Handle print preview with styles
|
||||
ipcMain.on('print-preview-styled', (event) => {
|
||||
if (mainWindow) {
|
||||
// Prepare for printing preview with colors
|
||||
mainWindow.webContents.send('prepare-print-preview', true);
|
||||
// Give renderer time to prepare, then print
|
||||
setTimeout(() => {
|
||||
mainWindow.webContents.print({
|
||||
silent: false,
|
||||
printBackground: true,
|
||||
color: true,
|
||||
margin: { marginType: 'default' }
|
||||
});
|
||||
}, 100);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user