Electron Version: 7.1.1
Operating System: Windows 10 (1803)

If I set the 'margins' option when call webContents.print method,
The app will crash with no error message.

```js
let { remote } = require("electron");
let webContents = remote.getCurrentWebContents();
webContents.print(
  {
    margins: {
      marginType: "custom",
      top: 30,
      bottom: 0,
      left: 0,
      right: 0
    }
  },
  (success, errorType) => {
    if (!success) console.log(errorType);
  }
);
```

shell/browser/api/electron_api_web_contents.cc
.SetMethod("inspectElement", &Ws::InspectElement)
      .SetMethod("setIgnoreMenuShortcuts", &Ws::SetIgnoreMenuShortcuts)
      .SetMethod("_setAudioMuted", &Ws::SetAudioMuted)
      .SetMethod("_isAudioMuted", &Ws::IsAudioMuted)
      .SetProperty("audioMuted", &Ws::IsAudioMuted,
                   &Ws::SetAudioMuted)
      .SetMethod("isCurrentlyAudible", &Ws::IsCurrentlyAudible)
      .SetMethod("undo", &Ws::Undo)
      .SetMethod("redo", &Ws::Redo)
      .SetMethod("cut", &Ws::Cut)
      .SetMethod("copy", &Ws::Copy)
      .SetMethod("paste", &Ws::Paste)
      .SetMethod("pasteAndMatchStyle", &Ws::PasteAndMatchStyle)
      .SetMethod("delete", &Ws::Delete)
      .SetMethod("selectAll", &Ws::SelectAll)
      .SetMethod("unselect", &Ws::Unselect)
      .SetMethod("replace", &Ws::Replace)
      .SetMethod("replaceMisspelling", &Ws::ReplaceMisspelling)
      .SetMethod("findInPage", &Ws::FindInPage)
      .SetMethod("stopFindInPage", &Ws::StopFindInPage)
      .SetMethod("focus", &Ws::Focus)
      .SetMethod("isFocused", &Ws::IsFocused)
      .SetMethod("tabTraverse", &Ws::TabTraverse)
      .SetMethod("_send", &Ws::SendIPCMessage)
      .SetMethod("_sendToFrame", &Ws::SendIPCMessageToFrame)
      .SetMethod("sendInputEvent", &Ws::SendInputEvent)
      .SetMethod("beginFrameSubscription", &Ws::BeginFrameSubscription)
      .SetMethod("endFrameSubscription", &Ws::EndFrameSubscription)
      .SetMethod("startDrag", &Ws::StartDrag)
      .SetMethod("attachToIframe", &Ws::AttachToIframe)