2

私はしばらくの間、PoDoFo C ++ライブラリを使用してテキストと行を(それぞれの座標で)抽出しようとしてきました。しかし、私にはこれを行う方法がありません。

これは私がこれまでに持っているものです:

#include <iostream>
#include <stdio.h>
#include <vector>
#include <podofo/podofo.h>
using namespace PoDoFo;
using namespace std;

int main( int argc, char* argv[] )
{
    const char* filename = "hello.pdf";
    PdfVecObjects *x = new PdfVecObjects();
    PdfParser parser(x, filename);
    parser.ParseFile("hello.pdf");

    for (TIVecObjects obj = x->begin(); obj != x->end(); obj++){
        PdfObject * a = x->RemoveObject(obj);
        // THIS IS MY PROBLEM VVVVVVVVVV
        cout << a->Reference().ToString() << endl;
    }

    return 0;
}

しかし、これは私に信じられないほど基本的な情報を与えるだけです(オブジェクト番号のようです)

DEBUG: Size=12
DEBUG: Reading numbers: 0 12
DEBUG: Reading XRef Section: 0 with 12 Objects.
DEBUG: Size=12
DEBUG: Reading numbers: 0 12
DEBUG: Reading XRef Section: 0 with 12 Objects.
1 0 R
2 0 R
3 0 R
4 0 R
5 0 R
6 0 R
7 0 R
8 0 R
9 0 R
10 0 R
11 0 R

オブジェクトの座標を印刷したいのですが、それが線かテキストか。テキストの場合は、テキストも印刷できるようにしたいと思います。私よりもこのライブラリをよく知っている人は、これを修正するために何ができるかを知っていますか?

4

2 に答える 2

3

この回答は、テキストを抽出する方法を示します。

テキストの位置情報を取得するには、次のコマンドも処理する必要があります。

Tc、、、、、、、および。Tw_ Tz_ TL_ T*_TrTm

すべての詳細を取得するには、AdobeからPDF仕様をダウンロードする必要があります。完全にテキスト処理に専念する章があります。あなたはそれをたくさん参照するので、その章を印刷することはあなたの時間の価値があります。あなたが知る必要があるすべてがそこにあります、しかしそれは必ずしも明白ではありません。

また、線形代数を少し使用する必要があります。ただし、それほど複雑なことはありません。

同じ結果を得るには多くの方法があるため、処理するドキュメントに特定の機能が必要ないように見える場合でも、すべてのコマンドを完全に実装することが重要です。例:すべてのテキストサイズを1ポイントに設定しているドキュメントに出くわし、テキストスケーリング係数を使用して実際のフォントサイズを設定していることに気付くまで、すべての計算を破棄しました。

于 2013-11-28T13:42:52.863 に答える
1

PoDoFoツール「podofotxtextract」を使用すると、x、y座標(PoDoFoパッケージのツールフォルダー)が得られます。PDFからテキストを抽出します。

于 2019-02-13T02:39:02.197 に答える