当前位置: 首页 > 知识库问答 >
问题:

UIGraphicsSetPDFContextURLForRect不会在Core Graphics PDF上创建可点击区域

万俟丁雷
2023-03-14

我试图在我的PDF上创建一个矩形区域,该区域将指向URL。PDF是在iOS应用程序中使用核心图形例程创建的。

在搜索有类似问题的人时,我发现了以下堆栈溢出问题:

在iOS上使用核心图形在PDF中嵌入超链接

如果我使用上面问题的答案中提供的代码,它对我来说是可行的。文本显示出来,是一个可点击的链接,但如果我指定一个比文本大得多的矩形,则只有文本是可点击的。此外,对代码进行了一些修改,以便我可以分别提供一个标签和一个URL,当我这样做并提供一个空字符串时,矩形中没有任何地方可以单击。

但是,如果我使用UIKit例程创建PDF(基本上是UIGraphicsBeginPDFContextToFile和子体),那么调用UIGraphicsSetPDFContexterForRect会在生成的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 define进行测试,以确保我要传递的矩形实际上是它应该位于的位置。)

以下是我在PDF生成的第一页上对上述方法的调用:

[self rectLink:@"http://stackoverflow.com" frame:CGRectMake(474,22,28,28) cropBox:cropBoxRect sourceContext:context];

变量cropBoxRect指的是当前页面的裁剪框,而context是我从文档开头的CGPDFContextCreateWithURL调用中保存的值。

共有1个答案

狄海
2023-03-14


-您需要在pdf中搜索页面对象编号,然后在其中获取 /Annots数组添加您的注释标记,将其对象编号附加到 /Annots数组
-为xref表中正确添加/修改的标记创建条目。
-添加预告片标记...
-这就是您如何将任何类型的注释添加到pdf中。

 类似资料:
  • 本文向大家介绍如何在HTML图片中创建可点击区域?,包括了如何在HTML图片中创建可点击区域?的使用技巧和注意事项,需要的朋友参考一下 要在图像中创建可点击区域,请创建带有可点击区域的图像映射。例如,在单击框时,将打开另一个网站,在单击同一图像中的三角形时,将打开另一个网站。 <area>标记定义图像内的区域,并嵌套在<map>标记内。以下是属性: 序号 属性和说明 1 alt 该区域的备用文字

  • 我正在尝试使用量角器登录谷歌帐户 google-account-spec.js conf.js 登录页面.js我正在使用页面对象模式(登录页面是页面对象) 当我尝试点击下一步按钮输入密码时,我得到一个错误 {WebDriverError:未知错误:元素…在点(1100527)处不可单击。其他元素将收到单击: 它说该元素不可点击,但之前在代码中我一直在等待它变得可点击。所以我就是不明白,这个元素怎么

  • 问题内容: 如本教程所述,我在GridView中显示了图像。我希望能够单击单个图像并执行其他事件,所以我需要知道单击了哪个图像。 我必须在ImageAdapter类中添加imageView.onKeyDown(keyCode,event)吗?这是当前存在的代码: 如何显示点击的图片?如何创建适当的处理程序? 问题答案: 对于GridView,可以使用setOnItemClickListener方法

  • 我有一个使用Selenium WebDriver版本3.6和Chrome驱动程序的自动化项目。软件运行良好,直到它开始显示错误 未知错误:元素在点(25,-9)处不可单击(会话信息:Chrome=61.0.3163.100)(驱动程序信息:ChromeDriver=2.31.488763(092DE99F48A300323ECF8C2A4E2E7CAB51DE5BA8),平台=Windows NT

  • 我在chromedriver上运行测试时出错,因为它在FirefoxDriver上运行良好: WebDriverException:未知错误:元素在点(1270,449)处不可单击。其他元素将接收点击:(会话信息:Chrome=44.0.2403.157)(驱动程序信息:ChromeDriver=2.17.340124 知道怎么了吗?我正在使用最新的ChromeDriver。