2012-02-09 4 views
1

PDFの指定ページで空きスペースを見つけようとするアルゴリズムが必要です。Android上でPDFページの空きスペースを見つける

私が探しているスペースは、100x100ピクセルの正方形です。右下から検索を開始し、さらに左に移動してから、適切なスペース(フリースペース/ホワイトスペース)を見つけるか、エラーを返すまで、徐々に行を上げて行きたいフリースペース。

Androidでこのような可能性を認識している人は誰ですか?もしそうでなければ、どうすれば実装できますか?

編集

文書がレンダリングされるまで、フリースポットを見つけることが、不可能であることを、私は最近、この研究のかなりをやっている、と私は右と仮定していますか?私がそれを手に入れたら、すべてのベクトルとすべてのオブジェクトを自由空間を見つけるために置くべきなのですから?意味、どのベクトルも交差しない場所?

答えて

1

間違いなくPDFをレンダリングする必要があります。ポップラーのようなものを使用して、白い領域を検索することができます。ここでは、インスピレーションとして/使用を変更することができるとのpoppler使用して、オープンソースのAndroidアプリです。

http://code.google.com/p/apdfviewer/

あなたがレンダリングされたPDFを持っていたら、あなたはスペースを見つけるためにBoyer-Moore string search algorithmのようなものを使用することができます。私。 1Dでは "+++ ... ++ ..... + ..........."の文字列 "......."を探しています。 =白と+ =白ではない。あなたは十分なスペースを見つけるまで

  1. 列に沿った検索:

    2Dでは、それは私が考えることができる最も効率的なものは、このようなもので、より複雑になります。

  2. 次の行に移動し、上の行にあったポイントまで検索します。
  3. その前にスペースがある場合は、手順2を繰り返して、続行します。

あなたは私が何を意味するかが表示される場合...このような何か:

void search(int row, int space_pos, int space_height_so_far) 
{ 
    for (int x = find_next_space(row, 0); x < space_pos; x = find_next_space(row, x+1)) 
    { 
    search(row+1, x, 0); 
    } 
    if (is_space(row, space_pos)) 
    { 
    if (space_height_so_far > ?) 
     cout << "Space found at " << row << ", " << space_pos << endl; 
    else 
     search(row+1, previous_space_pos, space_height_so_far); 
    } 
} 

うーん、私はすでにそのコードと間違っていくつかの物事を見ることができます..しかし、うまくいけばあなたのアイデアを得ます。私はアルゴリズムがすでに存在することを期待していますが、残念なことにその名前はわかりません。

+0

私はむしろ再帰関数に反するが、はい、私はポイントを取得します。私は再帰なしで作成しようとします。また、あなたが言及したコードの問題は何ですか?私は何を見なければならないのですか? –

関連する問題