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
auto* rfh = focused_frame && focused_frame->HasSelection()
                  ? focused_frame
                  : ontents()->GetMainFrame();
  print_view_manager->PrintNow(rfh, silent, std::move(print_settings),
                               std::move(print_callback));
}
void Ws::Print(gin_helper::Arguments* args) {
  gin_helper::Dictionary options =
      gin::Dictionary::CreateEmpty(args->isolate());
  base::Value settings(base::Value::Type::DICTIONARY);
  if (args->Length() >= 1 && !args->GetNext(&options)) {
    args->ThrowError("ws.print(): Invalid print settings specified.");
    return;
  }
  printing::CompletionCallback callback;
  if (args->Length() == 2 && !args->GetNext(&callback)) {
    args->ThrowError(
        "ws.print(): Invalid optional callback provided.");
    return;
  }
  // Set optional silent printing
  bool silent = false;
  options.Get("silent", &silent);
  bool print_background = false;
  options.Get("printBackground", &print_background);
  settings.SetBoolKey(printing::kSettingShouldPrintBackgrounds,
                      print_background);
  // Set custom margin settings
  gin_helper::Dictionary margins =
      gin::Dictionary::CreateEmpty(args->isolate());