2010-11-23 63 views

回答

5

Adobes PDF Spec狀態:

矩形使用描述一個頁面上的 位置和各種對象的邊界框 。矩形 應寫成四個 數字的陣列,給出一對 對角對角的座標。

雖然矩形常規 可以通過左下和 右上拐角指定,這是可以接受 指定任何兩個對角相對的角 。處理PDF 的應用程序應該準備好在需要特定轉角的情況下規範化此類 矩形。 典型地,陣列的形式爲 [LLX LLY URX URY]指定在於 順序 左下X,左下-Y, 右上x和矩形的上部右側y 座標。然後假定 矩形的其他兩個角具有 座標(llx,ury)和(urx,lly)。

因此,這意味着,如圖所示here,應該是這樣的RECT翻譯不是本地人:

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]); 
+0

+1幫助我的問題,但你肯定不應該實際上是: `的CGRect RECT = CGRectMake(COORDS [0],COORDS [1],COORDS [2] -coords [ 0],coords [3] -coords [1]);`instea (coords [0],coords [3],coords [2] -coords [0],coords [3] -coords [1]);`(注意``y`參數;它使用索引`1`座標而不是索引`3`)。無論如何,這對我有用。 – 2011-06-18 02:22:56