Adobe の「Document management - Portable Document Format - Part 1: PDF 1.7」 ( Pdf32000_2008.pdf ) によると、セクション 12.3.2.1 には次のように記載されています。
宛先は、次の項目で構成されるドキュメントの特定のビューを定義します。
表示するドキュメントのページ
そのページのドキュメント ウィンドウの場所
倍率 (ズーム) 係数
例:
[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
3 0 R
からどのように入手でき/D [3 0 R /FitR –4 399 199 533]
ますか?
のページ オブジェクトのようなページ オブジェクトへの間接参照を取得するにはどうすればよい[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 を検索するとどこで見つかりますか
返信ありがとうございます。どうもありがとうございました。