1

最近,我在项目中遇到了一个问题。我需要将 NSAttributedString 转换为 HTML 文件。解决方案 Click here对我不起作用,因为只想输出带有 TagName 和 idName 和 ClassName 的 HTML 文件,同时输出 CSS 样式文件以控制 HTML 文件的显示方式。这是我的示例代码,我希望你能得到我的意图:

    - (NSDictionary *)html
    {
        NSTextStorage *textStorage = [自身内容];
        NSArray *arr = [textStorage 段落];
        // 初始化 CSS 字典
        NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                     零];

        NSEnumerator *paragraphEnumerator;
        段落枚举器 = [arr objectEnumerator];
        NSAttributedString *段落;
        NSMutableArray *paragrapHTMLStrings = [[NSMutableArray alloc] initWithCapacity:[arr count]];

        NSMutableString *cssString = [[NSMutableString alloc] initWithCapacity:0];
        [cssString appendString:@"div{"];
        [cssString appendString:[NSString stringWithFormat:@"-webkit-column-count:%ld;", self.columnCount]];
        [cssString appendString:[NSString stringWithFormat:@"width:%fpx;", self.bounds.size.width]];
        [cssString appendString:[NSString stringWithFormat:@"height:%fpx;", self.bounds.size.height]];
        [cssString appendString:@"}"];


        [dict setObject:cssString forKey:@"css"];

        而(段落= [paragraphEnumerator nextObject]){
            // 初始化
            NSU整数长度;
            NSRange 有效范围 = NSMakeRange(0, 0);
            id 属性值;

            长度 = [段落长度];
            // 获取字体属性
            attributeValue = [段落属性:NSFontAttributeName atIndex:NSMaxRange(有效范围)有效范围:&有效范围];
            NSLog(@"字体为 %@", [attributeValue fontName]);
            NSLog(@"font-size is %f", [[[attributeValue fontDescriptor] objectForKey:NSFontSizeAttribute] floatValue]);
            NSMutableString *htmlString = [NSMutableString stringWithFormat:@"", [attributeValue fontName],
                                           [[[attributeValue fontDescriptor] objectForKey:NSFontSizeAttribute] floatValue]];

            [htmlString appendString:[段落字符串]];
            [htmlString 附加字符串:@”

"]; NSLog(@"htmlString 是 %@", htmlString); [段落HTMLStrings addObject:htmlString]; htmlString = 无; } NSMutableString *htmlStringOfGraphToReturn = [NSMutableString stringWithString:@""]; NSString *stringToAdd; NSEnumerator *stringEnumerator; stringEnumerator = [paragraphHTMLStrings objectEnumerator]; while (stringToAdd = [stringEnumerator nextObject]) { [htmlStringOfGraphToReturn appendString:stringToAdd]; } [htmlStringOfGraphToReturn appendString:@""]; [dict setObject:htmlStringOfGraphToReturn forKey:@"html"]; // 测试部分 CSSSetGenerator *generator = [[CSSSetGenerator alloc] init]; NSMutableString *string = [生成器输出CSSStyleContent:self]; NSLog(@"%@", 字符串); 返回字典; }
4

1 回答 1

0

我从 Github 获得了解决方案,有一个名为 DTCoreText 的开放项目。我希望这可能对某人有用。

于 2013-01-10T02:53:58.007 回答