我的问题是我必须为我的屏幕文本创建一个pdf。我的视图包含一个可滚动的文本视图。我的视图上有很多控件,例如日期标签,位置标签等。和文本视图。我能够创建我的文本视图填充文本的pdf,但我不知道如何在我的pdf页面中添加日期标签,位置标签和其他带有文本视图的东西。我的 pdf 创建代码是:
CGRect savedFrame = txtView.frame;
UIGraphicsBeginImageContext(txtView.contentSize);
{
CGPoint savedContentOffset = txtView.contentOffset;
txtView.contentOffset = CGPointZero;
txtView.frame = CGRectMake(0, 0, txtJEntry.contentSize.width, txtView.contentSize.height);
CGRect f = txtView.frame;
CGContextRef ctx = CGPDFContextCreateWithURL((__bridge CFURLRef)[NSURL fileURLWithPath:newFilePath isDirectory:NO], &f, NULL);
CGPDFContextBeginPage(ctx, NULL);
CGContextScaleCTM(ctx, 1, -1);
CGContextTranslateCTM(ctx, 0, -txtView.frame.size.height);
[txtJEntry.layer renderInContext:ctx];
CGPDFContextEndPage(ctx);
CFRelease(ctx);
txtJEntry.contentOffset = savedContentOffset;
txtJEntry.frame = savedFrame;
}
UIGraphicsEndImageContext();
如图所示,这是我视图的屏幕截图。我需要在我的pdf中添加天气,位置星星和日期,如图所示,这意味着这些标签的位置在pdf中也应该相同。我无法截取整个屏幕的屏幕截图,因为文本视图文本是可滚动的并且具有更多数据。
请帮助我如何在我的 pdf 中显示这些内容。
任何建议将不胜感激。提前感谢!
据我了解,您希望将UIView的全部内容转换为PDF。我有一个UIView
类别,可以将视图上的所有内容呈现为 PDF 文件。我在我的一个应用程序中成功使用它。
//UIView+RenderPDF.h
@interface UIView (RenderPDF)
- (void)renderInPDFFile:(NSString*)path;
@end
//UIView+RenderPDF.m
#import "UIView+RenderPDF.h"
#import <QuartzCore/QuartzCore.h>
@implementation UIView (RenderPDF)
- (void)renderInPDFFile:(NSString*)path {
CGRect mediaBox = self.bounds;
CGContextRef ctx = CGPDFContextCreateWithURL((CFURLRef)[NSURL fileURLWithPath:path isDirectory:NO], &mediaBox, NULL);
CGPDFContextBeginPage(ctx, NULL);
CGContextScaleCTM(ctx, 1, -1);
CGContextTranslateCTM(ctx, 0, -mediaBox.size.height);
[self.layer renderInContext:ctx];
CGPDFContextEndPage(ctx);
CFRelease(ctx);
}
@end
现在,为了使用它,一旦你#import UIView+RenderPDF.h
你需要做的是
NSArray* documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
NSString* documentDirectory = [documentDirectories objectAtIndex:0];
NSString* documentDirectoryFilename = [documentDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"export.pdf"]];
[someView renderInPDFFile:documentDirectoryFilename];
导致export.pdf
保存到Documents
目录中。将视图上的所有元素的屏幕截图放入PDF
文件中。
希望这有帮助!