1

最近、私のプロジェクトで問題が発生しました。NSAttributedStringをHTMLファイルに変換する必要があります。解決策TagNameとidNameおよびClassNameのみを使用してHTMLファイルを出力すると同時に、CSSスタイルファイルを出力してHTMLファイルの表示方法を制御するため、ここをクリックしても機能しませんこれが私のサンプルコードです。私の意図を理解していただければ幸いです。

    -(NSDictionary *)html
    {{
        NSTextStorage * textStorage=[自己コンテンツ];
        NSArray * arr=[textStorage段落];
        //CSS辞書を初期化します
        NSMutableDictionary * dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                     nil];

        NSEnumerator * paragraphEnumerator;
        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"];

        while(paragraph = [paragraphEnumerator nextObject]){
            //初期化します
            NSUIntegerの長さ;
            NSRangeeffectiveRange = NSMakeRange(0、0);
            id attributeValue;

            長さ=[段落の長さ];
            //フォント属性を取得します
            attributeValue = [段落属性:NSFontAttributeNameatIndex:NSMaxRange(effectiveRange)effectiveRange:&effectiveRange];
            NSLog(@ "font is%@"、[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 appendString:@ "

"]; NSLog(@ "htmlString is%@"、htmlString); [paragrapHTMLStrings addObject:htmlString]; htmlString = nil; } NSMutableString * htmlStringOfGraphToReturn = [NSMutableString stringWithString:@ ""]; NSString * stringToAdd; NSEnumerator * stringEnumerator; stringEnumerator = [paragrapHTMLStrings 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(@ "%@"、文字列); dictを返します。 }
4

1 に答える 1

0

Github からソリューションを入手しました。DTCoreText という名前の開いているプロジェクトがあります。これが誰かに役立つことを願っています。

于 2013-01-10T02:53:58.007 に答える