gpt4 book ai didi

html - 获取 HTML 形式的文本文件的正确格式

转载 作者:行者123 更新时间:2023-11-29 03:52:01 25 4
gpt4 key购买 nike

我使用以下代码将文本转换为 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)连续的低分成绩可能让人对他的 future 打上一个问号,但 BCCI 高级官员兼 IPL 主席拉吉夫·舒克拉 (Rajiv Shukla) 周一站出来支持这位高级击球手,称人们需要看看他的“巨大记录” ”在发表任何评论之前。

“当他认为是时候离开时,他就会挂靴。他不需要任何建议。在对他的表现发表评论之前,你必须看看他的巨大记录和过去的表现,”舒克拉在议会外对记者表示,这位经验丰富的板球运动员将在接下来的比赛中强势回归。

我得到的是:

新德里:萨钦·坦杜尔卡(Sachin Tendulkar)连续的低分成绩可能让人对他的 future 打上一个问号,但 BCCI 高级官员兼 IPL 主席拉吉夫·舒克拉 (Rajiv Shukla) 周一站出来支持这位高级击球手,称人们需要看看他的“巨大记录” ”在发表任何评论之前。 “当他认为是时候离开时,他就会挂靴。他不需要任何建议。在对他的表现发表评论之前,你必须看看他的巨大记录和过去的表现,”舒克拉在外面告诉记者议会补充说,这位经验丰富的板球运动员将在接下来的比赛中强势回归。

任何人都可以建议修改此代码,以便我可以获得正确的格式。

最佳答案

如果我猜对了,您应该将换行符替换为 <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];

关于html - 获取 HTML 形式的文本文件的正确格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16977298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com