/* ***** BEGIN LICENSE BLOCK ***** * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * The Original Code is Mozilla's printUtils.js * * Contributor(s): * EVENTRIC LLC. * * ***** END LICENSE BLOCK ***** */ Components.utils.import("resource://gre/modules/Services.jsm"); var EXPORTED_SYMBOLS = ["PrintHelper"]; var gPrintSettingsAreGlobal = false; var gSavePrintSettings = false; PrintHelper = { showPageSetup: function (aWindow) { try { var printSettings = this.getPrintSettings(); var PRINTPROMPTSVC = Components.classes["@mozilla.org/embedcomp/printingprompt-service;1"] .getService(Components.interfaces.nsIPrintingPromptService); PRINTPROMPTSVC.showPageSetup(aWindow, printSettings, null); if (gSavePrintSettings) { // Page Setup data is a "native" setting on the Mac var PSSVC = Components.classes["@mozilla.org/gfx/printsettings-service;1"] .getService(Components.interfaces.nsIPrintSettingsService); PSSVC.savePrintSettingsToPrefs(printSettings, true, printSettings.kInitSaveNativeData); } } catch (e) { // Pressing cancel is expressed as an NS_ERROR_ABORT return value, // causing an exception to be thrown which we catch here. // Unfortunately this will also consume helpful failures, so add a // dump("print: "+e+"\n"); // if you need to debug return false; } return true; }, print: function (aWindow) { var webBrowserPrint = this.getWebBrowserPrint(aWindow); var printSettings = this.getPrintSettings(); try { webBrowserPrint.print(printSettings, null); if (gPrintSettingsAreGlobal && gSavePrintSettings) { var PSSVC = Components.classes["@mozilla.org/gfx/printsettings-service;1"] .getService(Components.interfaces.nsIPrintSettingsService); PSSVC.savePrintSettingsToPrefs(printSettings, true, printSettings.kInitSaveAll); PSSVC.savePrintSettingsToPrefs(printSettings, false, printSettings.kInitSavePrinterName); } } catch (e) { // Pressing cancel is expressed as an NS_ERROR_ABORT return value, // causing an exception to be thrown which we catch here. // Unfortunately this will also consume helpful failures, so add a // dump("print: "+e+"\n"); // if you need to debug } }, getWebBrowserPrint: function (aWindow) { var contentWindow = aWindow || aWindow.content; return contentWindow.QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsIWebBrowserPrint); }, getPrintSettings: function () { var pref = Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefBranch); if (pref) { gPrintSettingsAreGlobal = pref.getBoolPref("print.use_global_printsettings", false); gSavePrintSettings = pref.getBoolPref("print.save_print_settings", false); } var printSettings; try { var PSSVC = Components.classes["@mozilla.org/gfx/printsettings-service;1"] .getService(Components.interfaces.nsIPrintSettingsService); if (gPrintSettingsAreGlobal) { printSettings = PSSVC.globalPrintSettings; this.setPrinterDefaultsForSelectedPrinter(PSSVC, printSettings); } else { printSettings = PSSVC.newPrintSettings; } } catch (e) { dump("getPrintSettings: "+e+"\n"); } return printSettings; } };