没错,要求是当前图形上下文是 PDF 上下文。您可以推送它(UIGraphicsPushContext)以使其处于活动状态,也可以像这样创建上下文:
UIGraphicsBeginPDFContextToFile(path, CGRectMake(0, 0, 612, 792), nil);
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, 612, 792), nil);
// ...
UIGraphicsSetPDFContextURLForRect(url, rect);
// ...
UIGraphicsEndPDFContext();
UIGraphicsSetPDFContextURLForRect 有 2 个参数:第一个是你希望链接去的 url,第二个是当前页面上代表链接区域的矩形。例如此行将在页面左下角创建指向 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();
}