NSAttributedString与编码的HTML之间的编码

时间:2014-07-10 19:44:42

标签: html ios encoding ckeditor nsattributedstring

对于我们的跨平台软件解决方案(iOS app +网站),我们需要在应用中允许显示和修改富文本。我们的解决方案仅支持少量字符属性 - 粗体,斜体,下划线,基本文本颜色和超链接(仅在网站上链接,而不是应用程序)。

富文本由现有网站以编码HTML文本的形式存储和传输。我的问题与我们需要支持的iOS应用有关。

到目前为止,我已成功将编码的HTML 文本转换为 NSAttributedString (使用此示例应用程序附带的屏幕截图) -

NSString *richTextHTML = self.textViewTop.text;
richTextHTML = [richTextHTML stringByDecodingHTMLEntities]; // Decodes HTML entities like &lt;p&gt; to <p> etc.

NSAttributedString *attribString = [[NSAttributedString alloc] initWithData:[richTextHTML dataUsingEncoding:NSUTF8StringEncoding]
                                                                    options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType}
                                                         documentAttributes:nil error:nil];

self.textViewBottom.attributedText = attribString;

此处stringByDecodingHTMLEntities是解码HTML实体的类别方法。编码的HTML文本示例是 -

&lt;p&gt;&lt;strong&gt;bold&lt;/strong&gt;&lt;em&gt;italic&lt;/em&gt;&lt;u&gt;underline&lt;/u&gt;&lt;span style=&quot;color:rgb(255, 0, 0)&quot;&gt;color&lt;/span&gt;&lt;/p&gt;

enter image description here 但是,在编辑NSAttributedString之后,我没有现有的方法可以转换回编码的HTML。而且,这就是问题所在。

我试过这个,但它只返回HTML文档 -

- (NSString *)htmlStringFromAttributedString:(NSAttributedString *)attribText {
    NSDictionary *exportParams = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType};
    NSData *htmlData = [attribText dataFromRange:NSMakeRange(0, attribText.length) documentAttributes:exportParams error:nil];
    return [[NSString alloc] initWithData:htmlData encoding:NSUTF8StringEncoding];
}

enter image description here 您能否提供一些简单的方法,或者您认为我需要枚举NSAttributedString的文本运行并自己创建编码的HTML字符串?

作为旁注/关键点 -

  1. App支持iOS 7及更高版本。

  2. 在网站上,我们使用第三方库CKEditor来做同样的事情。

0 个答案:

没有答案