我正在尝试在我的PDF上创建一个矩形区域,该区域将转到URL. PDF是使用Core Graphics例程在iOS应用程序中创建的.
在寻找有类似问题的人的搜索中,我发现了这个Stack Overflow问题:
Embed hyperlink in PDF using Core Graphics on iOS
如果我使用上述问题答案中提供的代码,它对我有用.文本显示并且是可点击的链接,但如果我指定的文本比文本大得多,则只能查看文本.另外,稍微修改了代码,以便我可以单独提供标签和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:@"https://stackoverflow.com" frame:CGRectMake(474,22,28,28) cropBox:cropBoxRect sourceContext:context];
变量cropBoxRect引用当前页面的裁剪框,context是我从文档开头的CGPDFContextCreateWithURL调用中保存的值.
最佳答案 最好编写自己的编写器来编写这样的注释到pdf而不是使用核心图形API,因为Apple还没有把PDFKit带到cocoa-touch,
– 您可以按照最简单的“增量更新”方法修改PDF参考1.7中提到的pdf.
– 你需要在pdf中搜索页面对象编号然后在其中获取/ Annots数组添加注释标记,将其对象编号追加到/ Annots数组
– 正确地在外部参照表中为新添加/修改的令牌创建条目.
– 添加预告片令牌..
这是您可以将任何类型的注释添加到pdf中的方法.