“annot”CGPDFDictionary“Rect”如何转换为目标c Rect
‘annot’CGPDFDictionary’Rar’如何转换为objective c Rect:
Adobes PDF Spec指出:
矩形用于描述页面上的位置和各种对象的边界框。 矩形应写成四个数字的数组,给出一对对角线的坐标。
虽然矩形通常由它们的左下角和右上角指定,但是可以指定任意两个对角相对的角。 处理PDF的应用程序应准备好在需要特定角落的情况下对这些矩形进行标准化。 通常,数组采用[llx lly urx ury]forms,按顺序指定矩形的左下角x,左下角y,右上角y和右上角y坐标。 然后假设矩形的另外两个角具有坐标(llx,ury)和(urx,lly)。
所以,这意味着矩形翻译不是原生的,如下所示,应该是这样的:
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]);