首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >'annot‘CGPDFDictionary ' Rect’如何转换为objective c Rect

'annot‘CGPDFDictionary ' Rect’如何转换为objective c Rect
EN

Stack Overflow用户
提问于 2010-11-23 18:57:15
回答 1查看 3.7K关注 0票数 1

如何将'annot‘CGPDFDictionary 'Rect’转换为objective C Rect:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-23 19:32:58

Adobes PDF Spec声明:

矩形用于描述页面上的位置和各种对象的边界框。一个矩形应该写成一个四个数字的数组,给出一对对角点的坐标。

虽然矩形通常由其左下角和右上角指定,但也可以指定任意两个对角。处理PDF的应用程序应该准备好在需要特定角的情况下标准化这些矩形。通常,该数组采用llx lly urx ury的形式,按顺序指定矩形的左下x、左下y、右上x和右上y坐标。然后假定矩形的其他两个角具有坐标(llx,ury)和(urx,lly)。

因此,这意味着rect转换不是原生的,如here所示,应该是这样的:

代码语言:javascript
复制
CGRect rect = CGRectMake(coords[0],coords[3],coords[2]-coords[0],coords[3]-coords[1]);

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

代码语言:javascript
复制
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]);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4255298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档