如何将'annot‘CGPDFDictionary 'Rect’转换为objective C Rect:
发布于 2010-11-23 19:32:58
Adobes PDF Spec声明:
矩形用于描述页面上的位置和各种对象的边界框。一个矩形应该写成一个四个数字的数组,给出一对对角点的坐标。
虽然矩形通常由其左下角和右上角指定,但也可以指定任意两个对角。处理PDF的应用程序应该准备好在需要特定角的情况下标准化这些矩形。通常,该数组采用llx lly urx ury的形式,按顺序指定矩形的左下x、左下y、右上x和右上y坐标。然后假定矩形的其他两个角具有坐标(llx,ury)和(urx,lly)。
因此,这意味着rect转换不是原生的,如here所示,应该是这样的:
CGRect rect = CGRectMake(coords[0],coords[3],coords[2]-coords[0],coords[3]-coords[1]);请参阅以下代码(由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]);https://stackoverflow.com/questions/4255298
复制相似问题