我正在尝试将HTML数据复制到MAC上的剪贴板。但是当我使用(Finder->编辑菜单 - >显示剪贴板)检查剪贴板时,它什么也没显示。我希望格式化数据按原样粘贴。以下是我正在使用的代码:
NSPasteboard *pb = [NSPasteboard generalPasteboard];
NSAttributedString *htmlString = [[NSAttributedString alloc]initWithString:@"<html><body><b>abcdefgh</b></body></html>"];
NSDictionary *documentAttributes = [NSDictionary dictionaryWithObjectsAndKeys:NSHTMLTextDocumentType, NSDocumentTypeDocumentAttribute, nil];
NSData *htmlData = [htmlString dataFromRange:NSMakeRange(0, htmlString.length) documentAttributes:documentAttributes error:NULL];
[pb declareTypes:[NSArray arrayWithObject:NSHTMLPboardType] owner:nil];
[pb setData:htmlData forType:NSHTMLPboardType];
我将不胜感激任何帮助。谢谢!
更新
要在剪贴板中获取html格式的字符串,我尝试将其转换为Attributed字符串,然后从属性字符串转换为rtf数据,它将数据设置为剪贴板完美,但是当我尝试将数据粘贴到html编辑器中时({ {3}})它失去了一些格式,如颜色。
NSPasteboard *pb = [NSPasteboard generalPasteboard];
NSString *htmlString = @"<HTML> <BODY> <P><FONT COLOR=\"RED\"><UL><LI>fhhj</LI><LI>juil</LI></UL><B>hello</B> <i>html</i></FONT></P> </BODY></HTML>";
NSDictionary *documentAttributes = [NSDictionary dictionaryWithObjectsAndKeys:NSHTMLTextDocumentType, NSDocumentTypeDocumentAttribute, NSCharacterEncodingDocumentAttribute,[NSNumber numberWithInt:NSUTF8StringEncoding], nil];
NSAttributedString* atr = [[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding] options:documentAttributes documentAttributes:nil error:nil];
NSData *rtf = [atr RTFFromRange:NSMakeRange(0, [atr length])
documentAttributes:nil];
[pb declareTypes:[NSArray arrayWithObject:NSRTFPboardType] owner:nil];
[pb setData:rtf forType:NSRTFPboardType];
粘贴到html编辑器时如何保留颜色?文本在剪贴板上以彩色显示,然后在html编辑器(http://htmleditor.in/)上没有粘贴颜色的原因?
答案 0 :(得分:0)
我终于得到了这个问题,功能是依赖浏览器的(我不明白原因)。 如果我在Safari中粘贴到该网站,它不会丢失任何格式并且运行良好,但如果我将相同的文本粘贴到chrome上的同一网站,则会丢失一些格式。
答案 1 :(得分:-1)
修改强>
如果要复制应用的属性,请使用
NSAttributedString *attrString = [[NSAttributedString alloc] initWithHTML:@"YOUR HTML CODE" documentAttributes:NULL];
[pb setData:attrString forType: NSPasteboardTypeRTF];