Cleanup the printToPDF code
This commit is contained in:
		
					parent
					
						
							
								eb882855bc
							
						
					
				
			
			
				commit
				
					
						0864d3b1ee
					
				
			
		
					 1 changed files with 42 additions and 39 deletions
				
			
		| 
						 | 
				
			
			@ -15,7 +15,8 @@ const getNextId = function () {
 | 
			
		|||
  return ++nextId
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const PDFPageSize = {
 | 
			
		||||
// Stock page sizes
 | 
			
		||||
const PDFPageSizes = {
 | 
			
		||||
  A5: {
 | 
			
		||||
    custom_display_name: 'A5',
 | 
			
		||||
    height_microns: 210000,
 | 
			
		||||
| 
						 | 
				
			
			@ -55,6 +56,31 @@ const PDFPageSize = {
 | 
			
		|||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Default printing setting
 | 
			
		||||
const defaultPrintingSetting = {
 | 
			
		||||
  pageRage: [],
 | 
			
		||||
  mediaSize: {},
 | 
			
		||||
  landscape: false,
 | 
			
		||||
  color: 2,
 | 
			
		||||
  headerFooterEnabled: false,
 | 
			
		||||
  marginsType: 0,
 | 
			
		||||
  isFirstRequest: false,
 | 
			
		||||
  requestID: getNextId(),
 | 
			
		||||
  previewModifiable: true,
 | 
			
		||||
  printToPDF: true,
 | 
			
		||||
  printWithCloudPrint: false,
 | 
			
		||||
  printWithPrivet: false,
 | 
			
		||||
  printWithExtension: false,
 | 
			
		||||
  deviceName: 'Save as PDF',
 | 
			
		||||
  generateDraftData: true,
 | 
			
		||||
  fitToPageEnabled: false,
 | 
			
		||||
  duplex: 0,
 | 
			
		||||
  copies: 1,
 | 
			
		||||
  collate: true,
 | 
			
		||||
  shouldPrintBackgrounds: false,
 | 
			
		||||
  shouldPrintSelectionOnly: false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Following methods are mapped to webFrame.
 | 
			
		||||
const webFrameMethods = [
 | 
			
		||||
  'insertText',
 | 
			
		||||
| 
						 | 
				
			
			@ -158,29 +184,7 @@ const wrapWebContents = function (webContents) {
 | 
			
		|||
  })
 | 
			
		||||
 | 
			
		||||
  webContents.printToPDF = function (options, callback) {
 | 
			
		||||
    const printingSetting = {
 | 
			
		||||
      pageRage: [],
 | 
			
		||||
      mediaSize: {},
 | 
			
		||||
      landscape: false,
 | 
			
		||||
      color: 2,
 | 
			
		||||
      headerFooterEnabled: false,
 | 
			
		||||
      marginsType: 0,
 | 
			
		||||
      isFirstRequest: false,
 | 
			
		||||
      requestID: getNextId(),
 | 
			
		||||
      previewModifiable: true,
 | 
			
		||||
      printToPDF: true,
 | 
			
		||||
      printWithCloudPrint: false,
 | 
			
		||||
      printWithPrivet: false,
 | 
			
		||||
      printWithExtension: false,
 | 
			
		||||
      deviceName: 'Save as PDF',
 | 
			
		||||
      generateDraftData: true,
 | 
			
		||||
      fitToPageEnabled: false,
 | 
			
		||||
      duplex: 0,
 | 
			
		||||
      copies: 1,
 | 
			
		||||
      collate: true,
 | 
			
		||||
      shouldPrintBackgrounds: false,
 | 
			
		||||
      shouldPrintSelectionOnly: false
 | 
			
		||||
    }
 | 
			
		||||
    const printingSetting = Object.assign({}, defaultPrintingSetting)
 | 
			
		||||
    if (options.landscape) {
 | 
			
		||||
      printingSetting.landscape = options.landscape
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -195,30 +199,29 @@ const wrapWebContents = function (webContents) {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    if (options.pageSize) {
 | 
			
		||||
      let height = 0
 | 
			
		||||
      let width = 0
 | 
			
		||||
      if (typeof options.pageSize === 'object') {
 | 
			
		||||
      const pageSize = options.pageSize
 | 
			
		||||
      if (typeof pageSize === 'object') {
 | 
			
		||||
        if (!pageSize.height || !pageSize.width) {
 | 
			
		||||
          return callback(new Error('Must define height and width for pageSize'))
 | 
			
		||||
        }
 | 
			
		||||
        // 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'
 | 
			
		||||
          custom_display_name: 'Custom',
 | 
			
		||||
          height_microns: pageSize.height,
 | 
			
		||||
          width_microns: pageSize.width
 | 
			
		||||
        }
 | 
			
		||||
      } else if (PDFPageSize[options.pageSize]) {
 | 
			
		||||
        printingSetting.mediaSize = PDFPageSize[options.pageSize]
 | 
			
		||||
      } else if (PDFPageSizes[pageSize]) {
 | 
			
		||||
        printingSetting.mediaSize = PDFPageSizes[pageSize]
 | 
			
		||||
      } else {
 | 
			
		||||
        printingSetting.mediaSize = PDFPageSize['A4']
 | 
			
		||||
        return callback(new Error(`Does not support pageSize with ${pageSize}`))
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      printingSetting.mediaSize = PDFPageSizes['A4']
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return this._printToPDF(printingSetting, callback)
 | 
			
		||||
    this._printToPDF(printingSetting, callback)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue