How to get HTML data out of of the OS X pasteboard / clipboard?

后端 未结 2 1596
醉梦人生
醉梦人生 2020-12-28 20:28

I do have to send a report regarding pasting some clipboard content into a web rich editor and I need a way to dump/restore the clipboard content to (probably) HTML.

2条回答
  •  孤城傲影
    2020-12-28 21:22

    Three years later, in more civilized times, we have Swift. You can write a short Swift script to pull exactly what you need off of OS X's pasteboard.

    Put the following Swift 4 snippet into a new text file. I named mine pbpaste.swift:

    import Cocoa
    let type = NSPasteboard.PasteboardType.html
    if let string = NSPasteboard.general.string(forType:type) {
      print(string)
    }
    else {
      print("Could not find string data of type '\(type)' on the system pasteboard")
      exit(1)
    }
    

    Then, copy some html, and run swift pbpaste.swift from the directory where you put that file.

    Yay, html! Uggh, OS X added a ton of custom markup (and a tag?!) — but hey, at least it's not plain text!

    Notes:

    • NSPasteboard.PasteboardType.html is a special global that evaluates to the string "public.html"
    • Obviously this is html specific, so you'd probably want to either:
      1. Name it pbpaste-html.swift, or
      2. Read the desired type from the command line arguments
    • It's kind of slow, because it's being interpreted on the fly, not compiled and executed. Compilation gives me a 10x speed-up:

      xcrun -sdk macosx swiftc pbpaste.swift -o pbpaste-html
      

      Then just call ./pbpaste-html instead of swift pbpaste.swift.

提交回复
热议问题