创建包含许多标签和文本的pdf以pdf格式查看视图的完整内容

时间:2012-06-06 07:00:51

标签: iphone objective-c ios core-graphics pdf-generation

我的问题是我必须创建一个我的屏幕文本的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中帮助我如何显示这些内容。

任何建议都将受到高度赞赏。 提前谢谢!

1 个答案:

答案 0 :(得分:0)

根据我的理解,您想要获取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文件视图中所有元素的屏幕截图。

希望这有帮助!