2013-10-02 30 views
4

我正嘗試在我的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調用中保存的值。

回答

2

最好是寫自己的作家寫出這樣的註釋到PDF,而不是使用核心圖形API,因爲蘋果並沒有採取PDFKit可可觸摸,
- 您可以按照修改最簡單的「增量更新」的方法在PDF參考1.7中提到的pdf。
- 您需要在pdf中搜索頁面對象編號,然後在其中獲取/ Annotations數組添加您的註釋標記,並將其對象編號附加到/ Annotation數組。012-
- 正確地爲xref表中的新添加/修改的標記創建條目。
- 添加拖車標記..
這是如何添加任何類型的註釋到pdf。