* 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
const std::string& url,
                              mate::Arguments* args) {
  ui::ScopedClipboardWriter writer(GetClipboardType(args));
  writer.WriteBookmark(title, url);
}
gfx::Image Clipboard::ReadImage(mate::Arguments* args) {
  ui::Clipboard* clipboard = ui::Clipboard::GetForCurrentThread();
  SkBitmap bitmap = clipboard->ReadImage(GetClipboardType(args));
  return gfx::Image::CreateFrom1xBitmap(bitmap);
}
void Clipboard::WriteImage(const gfx::Image& image, mate::Arguments* args) {
  ui::ScopedClipboardWriter writer(GetClipboardType(args));
  writer.WriteImage(image.AsBitmap());
}
#if !defined(OS_MACOSX)
void Clipboard::WriteFindText(const base::string16& text) {}
base::string16 Clipboard::ReadFindText() { return base::string16(); }
#endif
void Clipboard::Clear(mate::Arguments* args) {
  ui::Clipboard::GetForCurrentThread()->Clear(GetClipboardType(args));
}
}  
}  
namespace {
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,