* Electron version: 1.6.3
* Operating system: macOS 10.12.3 (Sierra)

### Expected behavior

`clipboard.read("com.adobe.pdf", "binary")` should return data as a `Buffer` or `String` with `binary` encoding if given clipboard data type is present.

### Actual behavior

Data is returned as `String`. When save to as a file using 'binary' encoding, file length is shorter than actual clipboard data size (verified using ClipboardViewer).

### How to reproduce

Use Sketch.app to draw a circle vector. Copy the circle into clipboard. One of the data types added to clipboard will be of type "com.adobe.pdf". Switch to test electron app that calls `clipboard.read`.
Now save the string to a file using `binary` encoding. Resulting PDF file can't be viewed as PDF and PDF validation will fail.

**UPDATE:** Other vector editing apps like Illustrator or Affinity Designer should also create `com.adobe.pdf" as well as Apple PDF Pasteboard type since this is how vector copy-paste works across editors.

**UPDATE2:** Just found a closed issue mentioning this may be due to Chromium returning only string. If this is true perhaps platform clipboard should be accessed directly instead of relying on Chromium.
atom/common/api/atom_api_clipboard.cc
#include "atom/common/api/atom_api_clipboard.h"
#include "atom/common/native_mate_converters/image_converter.h"
#include "atom/common/native_mate_converters/string16_converter.h"
#include "base/strings/utf_string_conversions.h"
#include "ui/base/clipboard/scoped_clipboard_writer.h"
#include "atom/common/node_includes.h"
namespace atom {
namespace api {
ui::ClipboardType Clipboard::GetClipboardType(mate::Arguments* args) {
  std::string type;
  if (args->GetNext(&type) && type == "selection")
    return ui::CLIPBOARD_TYPE_SELECTION;
  else
    return ui::CLIPBOARD_TYPE_COPY_PASTE;
}
std::vector<base::string16> Clipboard::AvailableFormats(mate::Arguments* args) {
  std::vector<base::string16> format_types;
  bool ignore;
  ui::Clipboard* clipboard = ui::Clipboard::GetForCurrentThread();
  clipboard->ReadAvailableTypes(GetClipboardType(args), &format_types, &ignore);
  return format_types;
}
bool Clipboard::Has(const std::string& format_string, mate::Arguments* args) {
  ui::Clipboard* clipboard = ui::Clipboard::GetForCurrentThread();
  ui::Clipboard::FormatType format(ui::Clipboard::GetFormatType(format_string));
  return clipboard->IsFormatAvailable(format, GetClipboardType(args));
}
std::string Clipboard::Read(const std::string& format_string,