首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UIGraphicsSetPDFContextURLForRect不会在核心图形PDF上创建可点击区域

UIGraphicsSetPDFContextURLForRect不会在核心图形PDF上创建可点击区域
EN

Stack Overflow用户
提问于 2013-10-03 03:45:40
回答 1查看 410关注 0票数 4

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

在搜索任何有类似问题的人时,我发现了这个Stack Overflow问题:

Embed hyperlink in PDF using Core Graphics on iOS

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

但是,如果我使用UIKit例程来创建PDF (基本上是UIGraphicsBeginPDFContextToFile和子代),那么对UIGraphicsSetPDFContextURLForRect的调用将在生成的PDF文件中创建一个可单击的区域,即使我没有提供任何文本。

下面是我用来创建矩形链接的方法:

代码语言:javascript
运行
复制
+ (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生成的第一个页面上对上面的方法进行的调用:

代码语言:javascript
运行
复制
[self rectLink:@"http://stackoverflow.com" frame:CGRectMake(474,22,28,28) cropBox:cropBoxRect sourceContext:context];

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

EN

回答 1

Stack Overflow用户

发布于 2015-05-13 20:18:27

最好是编写自己的编写器来编写这样的注释到pdf,而不是使用核心图形API,因为苹果还没有将PDFKit引入可可触摸,

pdf

  • 你可以遵循最简单的“增量更新”的方法来修改PDF,这在PDF参考1.7中提到过。

  • 你需要在pdf中搜索页面对象编号,然后在其中获取/Annots数组,添加你的批注标记,将它的对象编号附加到/Annots数组中,

  • 在xref表中正确地为新添加/修改的标记创建条目。

  • 添加尾部令牌..

这就是如何将任何类型的批注添加到pdf中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19145505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档