diff --git a/src/renderer/components/ExportPanel.vue b/src/renderer/components/ExportPanel.vue index 1f9cbe22..05060660 100644 --- a/src/renderer/components/ExportPanel.vue +++ b/src/renderer/components/ExportPanel.vue @@ -43,7 +43,7 @@
@@ -116,7 +116,7 @@ export default defineComponent({ pdfOptions: { landscape: '', pageSize: 'A4' as 'A4' | 'A3' | 'A5' | 'Legal' | 'Letter' | 'Tabloid', - scaleFactor: '100', + scaleFactor: 100, printBackground: true, } }) @@ -152,12 +152,14 @@ export default defineComponent({ await printCurrentDocument() } else { const { landscape, pageSize, scaleFactor, printBackground } = convert.pdfOptions + convert.pdfOptions.scaleFactor = Math.min(200, Math.max(10, convert.pdfOptions.scaleFactor)) + const buffer = await printCurrentDocumentToPDF({ pageSize, printBackground, landscape: Boolean(landscape), - scaleFactor: Number(scaleFactor) + scale: scaleFactor / 100, }) downloadContent(name + '.pdf', buffer, 'application/pdf') diff --git a/src/renderer/types.ts b/src/renderer/types.ts index 95266b8e..30eac8fa 100644 --- a/src/renderer/types.ts +++ b/src/renderer/types.ts @@ -1,5 +1,5 @@ import type { VNode } from 'vue' -import type { OpenDialogOptions } from 'electron' +import type { OpenDialogOptions, PrintToPDFOptions } from 'electron' import type { Language, MsgPath } from '@share/i18n' import type { Doc, FileItem, PathItem, Repo } from '@share/types' import type MarkdownIt from 'markdown-it' @@ -264,12 +264,7 @@ export type SettingGroup = 'repos' | 'appearance' | 'editor' | 'image' | 'proxy' export type RegistryHostname = 'registry.npmjs.org' | 'registry.npmmirror.com' export type Keybinding = { type: 'workbench' | 'editor' | 'application', keys: string | null, command: string } -export type PrintOpts = { - landscape?: boolean, - pageSize?: 'A0' | 'A1' | 'A2' | 'A3' | 'A4' | 'A5' | 'A6' | 'Legal' | 'Letter' | 'Tabloid' | 'Ledger' | { height: number, width: number } - scaleFactor?: number, - printBackground?: boolean, -} +export type PrintOpts = PrintToPDFOptions export type ConvertOpts = { fromType: 'markdown' | 'html',