0

次のコードを使用して、テキストを pdf 形式に変換しています。

 NSString *filePath = [[NSBundle mainBundle] pathForResource:@"All_lang_unicode" ofType:@"txt"];

NSString *str;
NSData *myData = [NSData dataWithContentsOfFile:filePath];
if (myData) {

    str = [[NSString alloc] initWithData:myData encoding:NSUTF16StringEncoding];
    NSLog(@"STRING : %@",str);  
}

NSString *html = [NSString stringWithFormat:@"<body>%@</body>",str];


UIMarkupTextPrintFormatter *fmt = [[UIMarkupTextPrintFormatter alloc]
                                   initWithMarkupText:html];
UIPrintPageRenderer *render = [[UIPrintPageRenderer alloc] init];
[render addPrintFormatter:fmt startingAtPageAtIndex:0];
CGRect page;
page.origin.x=0;
page.origin.y=0;
page.size.width=792;
page.size.height=612;


CGRect printable=CGRectInset( page, 0, 0 );
[render setValue:[NSValue valueWithCGRect:page] forKey:@"paperRect"];
[render setValue:[NSValue valueWithCGRect:printable] forKey:@"printableRect"];

NSLog(@"number of pages %d",[render numberOfPages]);

NSMutableData * pdfData = [NSMutableData data];
UIGraphicsBeginPDFContextToData( pdfData, CGRectZero, nil );

for (NSInteger i=0; i < [render numberOfPages]; i++)
{
    UIGraphicsBeginPDFPage();
    CGRect bounds = UIGraphicsGetPDFContextBounds();
    [render drawPageAtIndex:i inRect:bounds];

}

UIGraphicsEndPDFContext();
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString * pdfFile = [documentsDirectory stringByAppendingPathComponent:@"test.pdf"];
[pdfData writeToFile:pdfFile atomically:YES];

しかし、問題は、テキストの適切な書式設定が得られないことです。NSLog(); を使用して印刷するとき。適切なコンテンツを取得しますが、文字列を STRING に配置すると、スペースと改行が失われます..すべてが同じ行になります。つまり、継続的です。

(アップデート : )

NSLog OUTPUT:(適切)

ニューデリー:サチン・テンドゥルカールの連続低得点は彼の将来に疑問符を投げかけたかもしれないが、月曜日にBCCIの上級役員でIPLの会長であるラジブ・シュクラは、彼の「巨大な記録」を確認する必要があると述べ、上級打者を支持した。任意のコメント。

シュクラ氏は外で記者団に対し、「彼は引退する時が来たと思ったら引退するだろう。彼はこれについて何のアドバイスも必要としない。彼のパフォーマンスについてコメントする前に、彼の驚異的な記録と過去のパフォーマンスを見なければならない」と語った。議会は、ベテランのクリケット選手が今後の試合で力強く戻ってくるだろうと付け加えた.

そして私は次のようになります:

ニューデリー:サチン・テンドゥルカールの連続低得点は彼の将来に疑問符を投げかけたかもしれないが、月曜日にBCCIの上級役員でIPLの会長であるラジブ・シュクラは、彼の「巨大な記録」を確認する必要があると述べ、上級打者を支持した。任意のコメント。シュクラ氏は外で記者団に対し、「彼は引退する時が来たと思ったら引退するだろう。彼はこれについて何のアドバイスも必要としない。彼のパフォーマンスについてコメントする前に、彼の驚異的な記録と過去のパフォーマンスを見なければならない」と語った。議会は、ベテランのクリケット選手が今後の試合で力強く戻ってくるだろうと付け加えた.

適切な形式を取得できるように、このコードの変更を提案してください。

4

1 に答える 1