首页 > 解决方案 > 将带有图像的富文本复制到 NSPasteboard 并粘贴到 Word

问题描述

我想NSPasteboard通过代码设置文本和图像,然后我可以粘贴到 Microsoft Word 中。

现在我想到的一种方法是组织一个 RTF 对象并通过以下方式设置:

let board = NSPasteboard.general
board.clearContents()
board.setData(data, forType: .rtf)

所以我通过下载一个 RTF 文件和这样的过程进行测试:

func test() {
    let url = Bundle.main.url(forResource: "cat", withExtension: "rtf")

    if url != nil {
        let data = try? Data.init(contentsOf: url!)

        if (data == nil) {
            print("data is null")
            return
        }
        print("data", data)

        let board = NSPasteboard.general
        board.clearContents()

        // still rtf image is losted.
        let rst = board.setData(data, forType: .rtf)
        if (!rst) {
            print("setData failed")
        }
    }
}

它部分工作,但图像丢失。只粘贴了文字。

我该如何解决这个问题。或任何其他方式(将图像和文本复制到NSPasteboard)。

测试rtf 文件

我搜索的一些链接:

将带有图像的 NSAttributedString 保存到 RTF 文件时遇到问题

https://developer.apple.com/documentation/foundation/nsattributedstring/documenttype/1532538-rtf/

https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/AttributedStrings/Tasks/RTFAndAttrStrings.html

标签: swiftmacos

解决方案


推荐阅读