Add: custom pageSize for printToPDF
authorVasu Mahesh <vasu.mahesh@hotmail.com>
Tue, 31 May 2016 16:59:07 +0000 (22:29 +0530)
committerVasu Mahesh <vasu.mahesh@hotmail.com>
Tue, 31 May 2016 17:10:11 +0000 (22:40 +0530)
docs/api/web-contents.md
lib/browser/api/web-contents.js

index d071630..89d7e12 100644 (file)
@@ -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.
index 0f79a18..00057e1 100644 (file)
@@ -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)
   }
 }