你说得对,要求当前的图形上下文是PDF上下文。你可以使用UIGraphicsPushContext将其推入堆栈(以激活它),或者像这样创建上下文:
UIGraphicsBeginPDFContextToFile(path, CGRectMake(0, 0, 612, 792), nil);
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, 612, 792), nil);
UIGraphicsSetPDFContextURLForRect(url, rect);
UIGraphicsEndPDFContext();
UIGraphicsSetPDFContextURLForRect有两个参数:第一个参数是您想要链接跳转的url,第二个参数是当前页面上代表链接区域的矩形。例如,以下代码将在页面左下角创建72*72点大小的链接:
UIGraphicsSetPDFContextURLForRect(url, CGRectMake(0, 0, 72, 72));
这个方法实际上是在PDF文件中创建一个链接注释。该链接本身没有视觉效果,您必须知道它存在,或者如果您将鼠标移动到查看器中的PDF页面上,则可能偶然发现它。因此,通常需要在页面上绘制/编写一些内容(例如“单击此处”),并将链接区域设置在文本上方。
更新-工作代码片段:
- (void) makePdf {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *pdfFile = [documentsDirectory stringByAppendingPathComponent:@"uigraphics.pdf"];
UIGraphicsBeginPDFContextToFile(pdfFile, CGRectMake(0, 0, 612, 792), nil);
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, 612, 792), nil);
NSURL* url = [NSURL URLWithString: @"http://www.ipdfdev.com/"];
UIGraphicsSetPDFContextURLForRect(url, CGRectMake(0, 0, 50, 50));
UIGraphicsEndPDFContext();
}