第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用Quartz在iOS上獲取PDF超鏈接

使用Quartz在iOS上獲取PDF超鏈接

喵喵時(shí)光機(jī) 2019-10-24 11:21:12
我整天都在嘗試從iPad應(yīng)用程序中的PDF獲取超鏈接元數(shù)據(jù)。CGPDF * API真是一場(chǎng)噩夢(mèng),我在網(wǎng)上找到的關(guān)于這一切的唯一信息是我必須尋找“ Annots”字典,但我在PDF中找不到它。我什至使用舊的Voyeur Xcode樣本來檢查我的測(cè)試PDF文件,但沒有找到該“ Annots”字典的痕跡...要知道,這是一個(gè)功能,我在每一個(gè)PDF閱讀器看-這個(gè)同樣的問題已經(jīng)被 問 多 時(shí)間在這里沒有真正的實(shí)際的答案。我通常從不直接請(qǐng)求示例代碼,但是顯然這次我真的很需要……有人可以使用示例代碼來工作嗎?更新:我剛剛意識(shí)到,完成我的PDF測(cè)試的那個(gè)人只是將URL插入為文本,而不是真正的注釋。他嘗試添加注釋,我的代碼現(xiàn)在可以正常工作...但這不是我所需要的,因此看來我必須分析文本并搜索URL。但這是另一個(gè)故事...更新2:所以我終于想出了一些有效的代碼。我將其發(fā)布在這里,希望對(duì)您有所幫助。假定PDF文檔實(shí)際上包含注釋。for(int i=0; i<pageCount; i++) {    CGPDFPageRef page = CGPDFDocumentGetPage(doc, i+1);    CGPDFDictionaryRef pageDictionary = CGPDFPageGetDictionary(page);    CGPDFArrayRef outputArray;    if(!CGPDFDictionaryGetArray(pageDictionary, "Annots", &outputArray)) {        return;    }    int arrayCount = CGPDFArrayGetCount( outputArray );    if(!arrayCount) {        continue;    }    for( int j = 0; j < arrayCount; ++j ) {        CGPDFObjectRef aDictObj;        if(!CGPDFArrayGetObject(outputArray, j, &aDictObj)) {            return;        }        CGPDFDictionaryRef annotDict;        if(!CGPDFObjectGetValue(aDictObj, kCGPDFObjectTypeDictionary, &annotDict)) {            return;        }        CGPDFDictionaryRef aDict;        if(!CGPDFDictionaryGetDictionary(annotDict, "A", &aDict)) {            return;        }        CGPDFStringRef uriStringRef;        if(!CGPDFDictionaryGetString(aDict, "URI", &uriStringRef)) {            return;        }        CGPDFArrayRef rectArray;        if(!CGPDFDictionaryGetArray(annotDict, "Rect", &rectArray)) {            return;        }        int arrayCount = CGPDFArrayGetCount( rectArray );        CGPDFReal coords[4];        for( int k = 0; k < arrayCount; ++k ) {            CGPDFObjectRef rectObj;            if(!CGPDFArrayGetObject(rectArray, k, &rectObj)) {                return;            }            CGPDFReal coord;            if(!CGPDFObjectGetValue(rectObj, kCGPDFObjectTypeReal, &coord)) {                return;            }            coords[k] = coord;        }               
查看完整描述

3 回答

?
慕少森

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊

這是獲取至少每頁注釋CGPDFDictionary的基本思想。之后,您應(yīng)該可以在Adobe的PDF規(guī)范的幫助下找到答案。

1.)獲取CGPDFDocumentRef。

2.)獲取每個(gè)頁面。

3)在每個(gè)頁面上,使用CGPDFDictionaryGetArray(pageDictionary, "Annots", &outputArray)pageDictionary是表示CGPDFPage的CGPDFDictionary,而outputArray是存儲(chǔ)該頁面的Annots數(shù)組的變量(CGPDFArrayRef)。


查看完整回答
反對(duì) 回復(fù) 2019-10-24
?
侃侃爾雅

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊

我一定很困惑,因?yàn)槿绻沂褂靡韵旅?,這一切都會(huì)起作用:


CGRect rect = CGRectMake(coords[0],coords[1],coords[2]-coords[0]+1,coords[3]-coords[1]+1);

也許以后我會(huì)濫用嗎?PDF提供了角落,而CGRect需要一個(gè)角落和一個(gè)大小。


查看完整回答
反對(duì) 回復(fù) 2019-10-24
  • 3 回答
  • 0 關(guān)注
  • 629 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)