From: Vasu Mahesh Date: Tue, 31 May 2016 16:59:07 +0000 (+0530) Subject: Add: custom pageSize for printToPDF X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fc6628d159395731832cf58c5adb61108923bcea;p=platform%2Fframework%2Fweb%2Fcrosswalk-tizen.git Add: custom pageSize for printToPDF --- diff --git a/docs/api/web-contents.md b/docs/api/web-contents.md index d071630..89d7e12 100644 --- a/docs/api/web-contents.md +++ b/docs/api/web-contents.md @@ -655,7 +655,7 @@ size. * `marginsType` Integer - Specifies the type of margins to use. Uses 0 for default margin, 1 for no margin, and 2 for minimum margin. * `pageSize` String - Specify page size of the generated PDF. Can be `A3`, - `A4`, `A5`, `Legal`, `Letter` and `Tabloid`. + `A4`, `A5`, `Legal`, `Letter`, `Tabloid` or an Object containing `height` & `width` in Microns. * `printBackground` Boolean - Whether to print CSS backgrounds. * `printSelectionOnly` Boolean - Whether to print selection only. * `landscape` Boolean - `true` for landscape, `false` for portrait. diff --git a/lib/browser/api/web-contents.js b/lib/browser/api/web-contents.js index 0f79a18..00057e1 100644 --- a/lib/browser/api/web-contents.js +++ b/lib/browser/api/web-contents.js @@ -197,11 +197,31 @@ let wrapWebContents = function (webContents) { if (options.printBackground) { printingSetting.shouldPrintBackgrounds = options.printBackground } - if (options.pageSize && PDFPageSize[options.pageSize]) { - printingSetting.mediaSize = PDFPageSize[options.pageSize] - } else { - printingSetting.mediaSize = PDFPageSize['A4'] + + if (options.pageSize) { + let height = 0 + let width = 0 + if (typeof options.pageSize === 'object') { + // Dimensions in Microns + // 1 meter = 10^6 microns + height = options.pageSize.height ? options.pageSize.height : 0 + width = options.pageSize.width ? options.pageSize.width : 0 + } + + if (height > 0 && width > 0) { + printingSetting.mediaSize = { + height_microns: height, + name: 'CUSTOM', + width_microns: width, + custom_display_name: 'Custom' + } + } else if (PDFPageSize[options.pageSize]) { + printingSetting.mediaSize = PDFPageSize[options.pageSize] + } else { + printingSetting.mediaSize = PDFPageSize['A4'] + } } + return this._printToPDF(printingSetting, callback) } }