“annot”CGPDFDictionary“Rect”如何转换为objective c Rect

时间:2010-11-23 10:57:15

标签: iphone cocoa-touch ipad pdf ios

'annot'CGPDFDictionary'Rar'如何转换为目标c Rect:

1 个答案:

答案 0 :(得分:5)

Adobes PDF Spec州:

  

矩形用于描述   页面上的位置和边框   适用于各种物体。一个矩形   应写成四个数组   给出坐标的数字   一对对角的角落。

     

虽然矩形是传统的   由左下角和左下角指定   右上角,这是可以接受的   指定任意两个对角线   角落。处理PDF的应用程序   应该准备好这样的正常化   在哪些情况下的矩形   需要特定的角落。   通常,数组采用该形式   [llx lly urx ury]指定   左下角x,左下角y,   右上角x和右上角y   矩形的坐标,在那里   订购。另外两个角落   然后假设矩形有   坐标(llx,ury)和(urx,lly)。

所以,这意味着矩形翻译不是原生的,如here所示,应该是这样的:

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

请参阅代码Bellow(原始代码BrainFeeder)以查看coords数组的上下文:

CGPDFArrayRef rectArray;
                if(CGPDFDictionaryGetArray(annotDict, "Rect", &rectArray)) {
                    //continue;

                    CGPDFReal coords[4];

                    for( int k = 0; k < arrayCount; ++k ) {

                        CGPDFObjectRef rectObj;
                        if(!CGPDFArrayGetObject(rectArray, k, &rectObj)) {
                            continue;
                        }

                        CGPDFReal coord;
                        if(!CGPDFObjectGetValue(rectObj, kCGPDFObjectTypeReal, &coord)) {
                            continue;
                        }

                        coords[k] = coord;
                    }      

                }

                //blx,bly,trx,try>tlx,tly,w,h

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