'annot'CGPDFDictionary'Rar'如何转换为目标c Rect:
答案 0 :(得分:5)
矩形用于描述 页面上的位置和边框 适用于各种物体。一个矩形 应写成四个数组 给出坐标的数字 一对对角的角落。
虽然矩形是传统的 由左下角和左下角指定 右上角,这是可以接受的 指定任意两个对角线 角落。处理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]);