2010-11-23 6 views

Répondre

5

Adobes PDF Spec états:

Rectangles sont utilisés pour décrire emplacements sur une page et les boîtes de délimitation pour une variété d'objets. Un rectangle doit être écrit comme un tableau de quatre nombres donnant les coordonnées d'une paire de coins diagonalement opposés .

Bien que les rectangles sont classiquement spécifiés par leurs coins supérieur droit et inférieur gauche , il est acceptable pour spécifier tous les deux diagonalement opposés aux coins. Les applications qui traitent le PDF doivent être préparées pour normaliser ces rectangles dans les situations où des coins spécifiques sont requis. Typiquement, le réseau prend la forme [LLX lly urx ury] spécifiant les x inférieur gauche, y inférieur gauche, x supérieur droit, et supérieur droit y coordonnées du rectangle, dans cet ordre . Les deux autres coins du rectangle sont alors supposés avoir les coordonnées (llx, ury) et (urx, lly).

Donc, cela signifie que que la traduction rect n'est pas natif comme indiqué here et devrait ressembler à ceci:

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

Voir le code Bellow (code d'origine par BrainFeeder) pour voir le contexte du tableau 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]); 
+0

+1 Pour aider mon problème, mais êtes-vous sûr qu'il ne doit pas être fait: 'CGRect rect = CGRectMake (coords [0], coords [1], coords [2] -coords [ 0], coords [3] -coords [1]), 'instea d de 'CGRect rect = CGRectMake (coords [0], coords [3], coords [2] -coords [0], coords [3] -coords [1]);' (notez le paramètre 'y'; il utilise l'index '1' coord au lieu de l'index' 3'). En tout cas, cela a fonctionné pour moi. –

+0

@lindonfox, je suis confronté aux mêmes problèmes, je vais mettre en œuvre la sélection et surligner le texte en pdf, pouvez-vous m'aider avec? Avez-vous une explication détaillée comment le faire ou un exemple de code? –

+0

@MatrosovAlexander - dans le cas où vous ne l'avez pas encore vu, il y a un bon point de départ [ici] (http://stackoverflow.com/questions/3889634/fast-and-lean-pdf-viewer-for-iphone-ipad -ios-tips-and-hints). Désolé, je n'ai pas le temps pour le moment de rechercher un exemple de code spécifique. –

Questions connexes