我正在使用以下代码将文本转换为 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 输出:(正确)
新德里:Sachin Tendulkar 的连续低分可能对他的未来提出了一个问号,但 BCCI 高级官员和 IPL 主席 Rajiv Shukla 周一站出来支持这位高级击球手,他说在击球之前需要先看看他的“巨大记录”任何意见。
“当他认为该离开时,他会挂靴。他不需要任何建议。在对他的表现发表评论之前,你必须看看他的巨大记录和他过去的表现,”舒克拉在外面告诉记者议会补充说,这位资深板球运动员将在即将到来的比赛中强势回归。
我得到了:
新德里:Sachin Tendulkar 的连续低分可能对他的未来提出了一个问号,但 BCCI 高级官员和 IPL 主席 Rajiv Shukla 周一站出来支持这位高级击球手,他说在击球之前需要先看看他的“巨大记录”任何意见。“当他认为该离开时,他会挂靴。他不需要任何建议。在对他的表现发表评论之前,你必须看看他的巨大记录和他过去的表现,”舒克拉在外面告诉记者议会补充说,这位资深板球运动员将在即将到来的比赛中强势回归。
任何人都可以建议修改此代码,以便我可以获得正确的格式。