回答
当加载自定义文档类型(DOC,PPT,PDF等)转换成一个UIWebView,web视图返回零HTML字符串,即使是通过JavaScript。提取PDF文本here有几点建议。
但是将字符串转换回PDF是不同的。如果你想保留原始PDF的格式,我相当确定这是不可能的,因为iOS上的NSAttributedString并没有太大的作用。但是,如果可能的话,这将适用于纯文本或NSAttributedString:
NSData *PDFDataFromString(NSString *str) {
NSMutableData *data = [NSMutableData data];
//Create an NSAttributedString for CoreText. If you find a way to translate
//PDF into an NSAttributedString, you can skip this step and simply use an
//NSAttributedString for this method's argument.
NSAttributedString* string = [[[NSAttributedString alloc] initWithString:str] autorelease];
//612 and 792 are the dimensions of the paper in pixels. (8.5" x 11")
CGRect paperRect = CGRectMake(0.0, 0.0, 612, 792);
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef) string);
CGSize requiredSize = CTFramesetterSuggestFrameSizeWithConstraints(framesetter, CFRangeMake(0, [string length]), NULL, CGSizeMake(paperRect.size.width - 144, 1e40), NULL);
//Subtract the top and bottom margins (72 and 72), so they aren't factored in page count calculations.
NSUInteger pageCount = ceill(requiredSize.height/(paperRect.size.height - 144));
CFIndex resumePageIndex = 0;
UIGraphicsBeginPDFContextToData(data, paperRect, nil);
for(NSUInteger i = 0; i < pageCount; i++)
{
//After calculating the required number of pages, break up the string and
//draw them into sequential pages.
UIGraphicsBeginPDFPage();
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextSaveGState (currentContext);
CGContextSetTextMatrix(currentContext, CGAffineTransformIdentity);
CGMutablePathRef framePath = CGPathCreateMutable();
//72 and 72 are the X and Y margins of the page in pixels.
CGPathAddRect(framePath, NULL, CGRectInset(paperRect, 72.0, 72.0));
CTFrameRef frameRef = CTFramesetterCreateFrame(framesetter, CFRangeMake(resumePageIndex, 0), framePath, NULL);
resumePageIndex += CTFrameGetVisibleStringRange(frameRef).length;
CGPathRelease(framePath);
CGContextTranslateCTM(currentContext, 0, paperRect.size.height);
CGContextScaleCTM(currentContext, 1.0, -1.0);
CTFrameDraw(frameRef, currentContext);
CFRelease(frameRef);
CGContextRestoreGState (currentContext);
}
CFRelease(framesetter);
UIGraphicsEndPDFContext();
return data;
}
快乐编码!
thanx的答复老兄你可以解释它对我产生的结果是什么? –
它会给我一个单独的文本文件或任何其他? –
我已经将文件集成到我的应用程序从我已发布的链接,但我得到一些错误,可能是beccode的xcode版本问题它在版本4.2工作? –
- 1. 如何将PDF转换为android应用程序中的文本?
- 2. 将文本文件转换为pdf
- 3. 如何将aspx页面转换为pdf文件?
- 4. 如何将PDF转换为iPhone中的文本文件?
- 5. 如何将PDF转换为iTextSharp中的文本文件
- 6. 如何将PDF页面转换为iOS中的图像
- 7. 在JSP页面上载PDF文件并将其转换为文本文件
- 8. 将文本转换为PDF
- 9. 将pdf转换为文本
- 10. 如何使用Java将HTML页面转换为PDF文档?
- 11. 如何使用itext liberary将pdf转换为文本文件
- 12. 将图像转换为纯文本 - iOS应用程序
- 13. 如何将richtextbox文本转换为windows phone应用程序中的文本块?
- 14. 如何将gp4文件转换为pdf
- 15. 如何将.CATDrawing文件转换为.pdf
- 16. 如何将DJVU文件转换为PDF
- 17. 如何将ios应用程序转换为Xamarin.ios应用程序?
- 18. 将html文件转换为PDF使用Cocoa-Touch的iOS文档
- 19. 如何以编程方式将PDF文件转换为文本文件?
- 20. 如何使用vb6程序将excel文件转换为pdf文件?
- 21. 如何将pdf文件转换为使用Java的word文件
- 22. 如何将PDF文件转换为使用vb.net的word文件
- 23. 如何将PDF文件转换为java swing中的doc文件?
- 24. 如何将图像文件转换为Android中的pdf文件
- 25. 如何将pdf文件转换为android中的doc文件?
- 26. 如何将pdf文件转换为C#.net中的xml文件?
- 27. 如何使用Java将HTML网页转换为PDF文件
- 28. 如何将我的java文件转换为应用程序?
- 29. 如何使用pyPdf反转PDF文件中页面的顺序?
- 30. 如何使用itextsharp将html页面转换为PDF格式的css文件?
可能重复[如何从PDF页面获取文本?](http://stackoverflow.com/questions/9427634/how-can-i-get-the-text-from-pdf-page) – Tirth
对不起,哥们,我不想从PDF页面的文本。我需要一个单独的文本文件。 –
老兄,它给你从pdf文件的文本,你需要写在文本文件使用简单的I/O操作的字符串读取和写入。我必须先了解您最初需要的内容,而不依赖于第三方库或API。 – Tirth