From a47febd09c9514f2f58da4f251ec05df80cc4983 Mon Sep 17 00:00:00 2001 From: Abe Jellinek Date: Wed, 6 Nov 2024 14:12:54 -0500 Subject: [PATCH] EPUB/Snapshot: Override print options to correct title & URL --- src/dom/epub/epub-view.ts | 16 +++++++++++++++- src/dom/snapshot/snapshot-view.ts | 11 +++++++++-- src/globals.d.ts | 2 +- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/dom/epub/epub-view.ts b/src/dom/epub/epub-view.ts index b4db4a32..4c6bcb80 100644 --- a/src/dom/epub/epub-view.ts +++ b/src/dom/epub/epub-view.ts @@ -1064,7 +1064,21 @@ class EPUBView extends DOMView { ); if (typeof this._iframeWindow.zoteroPrint === 'function') { - await this._iframeWindow.zoteroPrint(); + await this._iframeWindow.zoteroPrint({ + overrideSettings: { + // Set title based on the book's title + title: this.book.packaging.metadata.title || '', + // Remove 'about:srcdoc' URL + docURL: '', + // And disable printing either of those things in the margins by default + headerStrLeft: '', + headerStrCenter: '', + headerStrRight: '', + footerStrLeft: '', + footerStrCenter: '', + footerStrRight: '', + } + }); } else { this._iframeWindow.print(); diff --git a/src/dom/snapshot/snapshot-view.ts b/src/dom/snapshot/snapshot-view.ts index 5938a9d1..09400406 100644 --- a/src/dom/snapshot/snapshot-view.ts +++ b/src/dom/snapshot/snapshot-view.ts @@ -94,7 +94,8 @@ class SnapshotView extends DOMView { getData() { return { srcDoc: this._iframe.srcdoc, - url: this._iframeDocument.head.querySelector('base')?.href + url: this._iframeDocument.head.querySelector('base')?.href, + importedFromURL: this._options.data.importedFromURL, }; } @@ -506,7 +507,11 @@ class SnapshotView extends DOMView { async print() { if (typeof this._iframeWindow.zoteroPrint === 'function') { - await this._iframeWindow.zoteroPrint(); + await this._iframeWindow.zoteroPrint({ + overrideSettings: { + docURL: this._options.data.importedFromURL || '', + }, + }); } else { this._iframeWindow.print(); @@ -524,6 +529,8 @@ export interface SnapshotViewState extends DOMViewState { export interface SnapshotViewData { srcDoc?: string; + url?: string; + importedFromURL?: string; } export default SnapshotView; diff --git a/src/globals.d.ts b/src/globals.d.ts index 16c17b66..ac6ca914 100644 --- a/src/globals.d.ts +++ b/src/globals.d.ts @@ -5,7 +5,7 @@ declare interface Window { DarkReader: typeof import('darkreader'); - zoteroPrint?: () => Promise; + zoteroPrint?: (options?: { overrideSettings?: Record }) => Promise; } declare interface Document {