根据 Adobe 的“文档管理 - 便携式文档格式 - 第 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]
's page 对象)的间接引用?
这是我的代码:
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 找到
谢谢您的回复,非常非常非常非常感谢...我希望您能再次得到您的答复!