在iOS或Cocoa上寻找如何使用UIGraphicsSetPDFContextURLForRect

Dia*_*tin 5 pdf cocoa hyperlink ios

我正在玩iOS上操作PDF(显示但也主要是生成).

我希望嵌入矩形区域作为"外部"链接(URL如http://host.tld/path/file).

你知道在哪里可以找到如何使用UIGraphicsSetPDFContextURLForRect函数的例子吗?互联网上我绝对没有找到任何东西.

如果我理解得很好,唯一的要求就是当前的图形上下文应该是PDF"类型",我认为我尊重这一点,因为上游我称之为UIGraphicsPushContext为什么我的PDF上下文作为参数(这对于drawAtPoint这样的方法无论如何都需要:我也成功使用).

我认为这不重要,但以防万一我指定这不会发生在一个View子类的drawRect:中.

你非常明确地说我"完全没错".图形环境非常复杂,在iOS中很丰富,我认为现在还没有超过1%或2%的同化.

先感谢您.

iPD*_*dev 5

你是对的,要求是当前的图形上下文是一个PDF上下文.您可以推送它(UIGraphicsPushContext)使其处于活动状态,也可以像这样创建上下文:

UIGraphicsBeginPDFContextToFile(path, CGRectMake(0, 0, 612, 792), nil);
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, 612, 792), nil);
// ...
UIGraphicsSetPDFContextURLForRect(url, rect);
// ... 
UIGraphicsEndPDFContext(); 
Run Code Online (Sandbox Code Playgroud)

UIGraphicsSetPDFContextURLForRect有2个参数:第一个是您想要链接的URL,第二个是当前页面上代表链接区域的矩形.例如,此行将创建指向页面左下角URL的链接,链接大小为72*72点:

UIGraphicsSetPDFContextURLForRect(url, CGRectMake(0, 0, 72, 72));
Run Code Online (Sandbox Code Playgroud)

这种方法实际上做的是在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();
}
Run Code Online (Sandbox Code Playgroud)