Iphone 从plist文件生成PDF(包含文本和图像),可以吗?

Iphone 从plist文件生成PDF(包含文本和图像),可以吗?,iphone,ios,pdf,uiview,quartz-graphics,Iphone,Ios,Pdf,Uiview,Quartz Graphics,背景: 我的应用程序将用户输入的信息保存到plist文件中。拍摄照片或从库中选择照片时,照片也会作为NSData保存到plist 我想获取plist文件中包含的信息并生成一个PDF文档,包括来自NSData的图像 问题: 我听说有一种从UIView生成PDF的方法,是有一个很好的例子,还是一种不用编写1000行C代码的简单方法 是否可以在Interface Builder中设计一个视图,然后使用一些神奇的代码从该视图生成PDF,使用plist文件中的数据?要生成PDF,您必须实际绘制整个PDF,

背景:

我的应用程序将用户输入的信息保存到plist文件中。拍摄照片或从库中选择照片时,照片也会作为NSData保存到plist

我想获取plist文件中包含的信息并生成一个PDF文档,包括来自NSData的图像

问题:

我听说有一种从UIView生成PDF的方法,是有一个很好的例子,还是一种不用编写1000行C代码的简单方法


是否可以在Interface Builder中设计一个视图,然后使用一些神奇的代码从该视图生成PDF,使用plist文件中的数据?

要生成PDF,您必须实际绘制整个PDF,将图形和文本放在每页的确切位置。苹果的解释了如何去做

不幸的是,这并不容易,而且我不知道有什么神奇的代码可以从视图生成PDF。

这里有一些“神奇的代码”(引用@Matt;-)可以将视图层次结构写入PDF:

#import <QuartzCore/CALayer.h>

UIView *displayView = self.view;
CALayer *layer = displayView.layer;
CGRect pageRect = displayView.bounds;
if (UIGraphicsBeginPDFContextToFile(path, pageRect, [self pdfContextDictionary]) == NO) {
  return nil; // error
}

UIGraphicsBeginPDFPage();
CGContextRef context = UIGraphicsGetCurrentContext();
[layer renderInContext:context];
UIGraphicsEndPDFContext();  
#导入
UIView*displayView=self.view;
CALayer*layer=displayView.layer;
CGRect pageRect=displayView.bounds;
if(uigraphicsbeginpddfcontexttofile(路径,pageRect,[self-pdfContextDictionary])==NO){
返回nil;//错误
}
UIGraphicsBeginPDFPage();
CGContextRef context=UIGraphicsGetCurrentContext();
[层渲染上下文:上下文];
UIGraphicsSendPdfContext();
不幸的是,它以屏幕分辨率显示, 您可以创建一个比屏幕更大的版本,然后它将是一个更好的分辨率


要获得漂亮(痛苦)的PDF,请参阅上述参考指南

保存为PDF的UIView可见部分的屏幕截图并不是几乎任何人都想要的PDF。