我正在尝试在我的 PDF 上创建一个将转到 URL 的矩形区域。PDF 是在 iOS 应用程序中使用 Core Graphics 例程创建的。
在寻找有类似问题的人时,我发现了这个 Stack Overflow 问题:
在 iOS 上使用 Core Graphics 在 PDF 中嵌入超链接
如果我使用上述问题的答案中提供的代码,它对我有用。文本显示并且是一个可点击的链接,但如果我指定一个比文本大得多的矩形,则只有文本是可点击的。此外,稍微修改了代码,以便我可以分别提供标签和 URL,当我这样做并提供一个空字符串时,矩形中没有任何可点击的地方。
但是,如果我使用 UIKit 例程来创建 PDF(基本上是 UIGraphicsBeginPDFContextToFile 和后代),那么即使我没有提供任何文本,对 UIGraphicsSetPDFContextURLForRect 的调用也会在生成的 PDF 文件中创建一个可点击的区域。
这是我用来创建矩形链接的方法:
+ (void)rectLink:(NSString *)urlString frame:(CGRect)frameRect cropBox:(CGRect)cropBoxRect sourceContext:(CGContextRef)context
{
UIGraphicsPushContext(context);
#ifdef OUTPUT_TEXT_LINK_OUTLINE
CGContextSetLineWidth(context, 5.0);
CGContextSetStrokeColorWithColor(context, [UIColor purpleColor].CGColor);
CGContextStrokeRect(context, frameRect);
#endif
NSURL *url = [NSURL URLWithString:urlString];
UIGraphicsSetPDFContextURLForRect(url, frameRect);
UIGraphicsPopContext();
}
(OUTPUT_TEXT_LINK_OUTLINE 定义是我用来测试的东西,以确保我传入的矩形实际上是它应该在的位置。)
这是我在 PDF 生成的第一页上对上述方法的调用:
[self rectLink:@"http://stackoverflow.com" frame:CGRectMake(474,22,28,28) cropBox:cropBoxRect sourceContext:context];
变量cropBoxRect 指的是当前页面的裁剪框,上下文是我从文档开头的CGPDFContextCreateWithURL 调用中保存的值。