我正嘗試在我的PDF上創建一個矩形區域,它將轉到一個URL。 PDF是使用Core Graphics例程在iOS應用程序中創建的。UIGraphicsSetPDFContextURLForRect不會在Core Graphics PDF上創建可點擊區域
在搜索中找到類似的問題的人,我發現這個堆棧溢出問題:
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:@"http://stackoverflow.com" frame:CGRectMake(474,22,28,28) cropBox:cropBoxRect sourceContext:context];
弗吉尼亞州riable cropBoxRect引用當前頁面的裁切框,上下文是我在文檔開始時從CGPDFContextCreateWithURL調用中保存的值。