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



我的问题是我必须为我的屏幕文本创建一个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文件中。

希望这有帮助!