根據Adobe的「文檔管理 - 便攜式文檔格式 - 第1部分:PDF 1.7」(Pdf32000_2008.pdf),第12.3.2.1狀態:如何使用CGPDF獲取對頁面對象的間接引用?
目的地定義特定 視圖一個文件,,由在 以下項目:
是應顯示的文檔的頁面
的該網頁上的文檔窗口的位置
放大倍率(變焦)因子
例子:
[page /XYZ left top zoom]
但在我的代碼
CGPDFArrayGetObject(dArray, 0, &dObj)
是CGPDFDictionaryRef
。
93 0 obj
<< /Type /Annot
/Subtype /Link
/Rect [71 717 190 734]
/Border [16 16 1]
/A << /Type /Action
/S /GoTo
/D [3 0 R /FitR –4 399 199 533]
>>
>>
endobj
如何從/D [3 0 R /FitR –4 399 199 533]
獲得3 0 R
?
如何獲得間接引用頁面對象如[page /XYZ left top zoom]
的頁面對象?
這裏是我的代碼:
CGPDFPageRef pdfPage = CGPDFDocumentGetPage(pdfRef, pageNum);
CGPDFDictionaryRef pageDictionary = CGPDFPageGetDictionary(pdfPage);
CGPDFArrayRef outputArray;
if(CGPDFDictionaryGetArray(pageDictionary, "Annots", &outputArray))
{
int arrayCount = 0;
arrayCount = CGPDFArrayGetCount(outputArray);
if(arrayCount>0)
{
for(int j = 0; j < arrayCount; ++j)
{
CGPDFObjectRef aDictObj;
if(CGPDFArrayGetObject(outputArray, j, &aDictObj))
{
CGPDFDictionaryRef annotDict;
if(CGPDFObjectGetValue(aDictObj, kCGPDFObjectTypeDictionary, &annotDict))
{
CGPDFDictionaryRef aDict;
if(CGPDFDictionaryGetDictionary(annotDict, "A", &aDict))//page 1 returns here
{
CGPDFArrayRef dArray;
if(CGPDFDictionaryGetArray(aDict, "D", &dArray))
{
CGPDFObjectRef dObj;
if(CGPDFArrayGetObject(dArray, 0, &dObj)){
CGPDFDictionaryRef annotDict;
if(CGPDFObjectGetValue(dObj, kCGPDFObjectTypeDictionary, &annotDict))
{
}
}
}
}
}
}
}
}
}
非常感謝你對你重播〜但我有一個問題 我在哪裏可以知道這個對象數爲3?
CGPDFArrayGetObject(dArray, 0, &dObj)
得到CGPDFDictionaryRef,但我沒有發現場是 「3 0 R」
和另外一個問題,如果我知道的是 「3 0 R」
我在哪裏可以找到搜索你的PDF爲3 0 obj
謝謝你的回覆,非常感謝你非常非常...我希望得到你的答案!
非常感謝您的回覆〜但我有一個問題,我可以在哪裏知道這個對象編號是3? CGPDFArrayGetObject(dArray,0,&DOBJ) 得到CGPDFDictionaryRef,但我沒有發現場是 「3 0 R」 和另外一個問題,如果我知道的是 「3 0 R」 我在哪裏可以找到通過搜索您的PDF爲3 0目標 謝謝你的回覆,非常感謝你非常非常...我希望得到你的答案! – user476489 2011-06-10 09:37:31
@我會更新答案有點... – 2011-06-10 12:02:28
非常感謝你! – user476489 2011-06-11 06:58:10