我正在使用以下代码将文本转换为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()打印时,我得到了正确的内容,但是当我将字符串放入字符串时,空格和换行符就会丢失。都排在同一条线上。即连续的。
(更新:)
NSLog输出:(适当)
新德里:萨钦·坦杜尔卡( Sachin Tendulkar)的低分记录可能会对他的未来产生问号,但国商集团高级官员兼IPL董事长拉吉夫·舒克拉( Rajiv Shukla )周一表示,支持这位资深击球手,在发表任何评论之前,必须先看看他的“巨大记录”。
舒克拉在议会外对记者说:“当他认为该走的时候,他会挂靴。他不需要任何建议。在对他的表现发表评论之前,你必须看看他的巨大记录和过去的表现。”他补充说,这位经验丰富的板球运动员将在即将到来的比赛中强势回归。
和as as:
新德里:萨钦·坦杜尔卡( Sachin Tendulkar)的低分记录可能会对他的未来产生问号,但国商集团高级官员兼IPL董事长拉吉夫·舒克拉( Rajiv Shukla )周一表示,支持这位资深击球手,在发表任何评论之前,必须先看看他的“巨大记录”。舒克拉在议会外对记者说:“当他认为该走的时候,他会挂靴。他不需要任何建议。在对他的表现发表评论之前,你必须看看他的巨大记录和过去的表现。”他补充说,这位经验丰富的板球运动员将在即将到来的比赛中强势回归。
有谁能建议修改这段代码,以便我能得到正确的格式。
发布于 2013-06-07 06:18:06
如果我做对了,您应该用<br>或<p>替换新的行字符。试一试
str = [str stringByReplacingOccurrencesOfString:@"\n" withString:@"<br>"];
How to detect new lines in Objective-C
下一个问题的解决方案可能如下所示:
NSArray *words = [str componentsSeparatedByString:@" "];
NSString *line = @"";
NSUInteger maxLineLength = 100;
NSString *resultStr = @"";
for (NSString *word in words) {
if ([line length] + [word length] > maxLineLength) {
resultStr = [resultStr stringByAppendingFormat:@"%@<br>", line];
line = word;
} else {
line = [line stringByAppendingFormat:@" %@", word];
}
}
resultStr = [resultStr stringByAppendingString:line];https://stackoverflow.com/questions/16977298
复制相似问题