PDF アプリケーション サンプル
PDFファイルを開き、それを構文解析するサンプルアプリケーションを公開します。
ここで示すアプリケーションは、PDF構文を説明するためのものですので、すべてのPDFファイルを構文解析できるものではありません。
このサンプルは、PDF Toolsとは無関係です。PDF構文を説明するための簡単なサンプルアプリケーションの一部です。
このサンプルは、PDF Toolsとは無関係です。PDF構文を説明するための簡単なサンプルアプリケーションの一部です。
前へ <<<
2. Trailerの解析
Trailerは、キーと値のペアが0個以上格納されたディクショナリです。このTrailerを以下のメソッドで解析します。
Trailerは解析されて、以下に格納されます。
int ParseTrailer(int offs)
{
BYTE *pdf = data.pBlobData;
//"<<"まで読み飛ばし
trailerInfo.offs = offs;
if(ParseObject(&trailerInfo.offs, NULL, &trailerInfo.len))return -1;
//
// 構文解析
//
string key;
int len;
for(offs=trailerInfo.offs; offs<(trailerInfo.offs+trailerInfo.len); offs++){
//キーまで読み飛ばし
while(true){
if(offs>=(trailerInfo.offs+trailerInfo.len)) goto end_proc;
else if(strchr(WHITE_SPACE DELIMITER, (int)pdf[offs])) offs++;
else break;
}
//キー
for(key=""; !strchr(WHITE_SPACE, (int)pdf[offs]); offs++) key += (char)pdf[offs];
//値
while(strchr(WHITE_SPACE, (int)pdf[offs])) offs++; //white-spaceを読み飛ばし
int type;
if(ParseObject(&offs, &type, &len)) return -5;
trailer[key] = SPdfData(type, offs, len);
offs += len;
}
end_proc:
return 0;
}
ParseObject( )は、すべてのオブジェクトを解析できるメソッドです。ディクショナリもオブジェクトですが、そこに含まれるコンポーネント(キーや値)もオブジェクトなのでParseObject( )で解析します。Trailerは解析されて、以下に格納されます。
map<string,SPdfData> trailer;SPdfDataは、Trailerの各要素を格納する構造体です。
typedef struct SPdfData_t {
int type; //オブジェクトの種類
int offs; //オブジェクトのオフセット値
int len; //オブジェクトの長さ
SPdfData_t(){ type=offs=len=0; }
SPdfData_t(const SPdfData_t &s){ *this=s; }
SPdfData_t(int t, int o, int l){ type=t; offs=o; len=l; }
} SPdfData, *pSPdfData;
>>> 次へ
サンプル アプリケーションについて
PDFデータを解析できるサンプルアプリケーションを公開しています。PDFParse17_1_0.zip(Winfows版)をダウンロードして、お手元のPDFデータを解析してください。
このアプリケーションのソースコードは、PDF Tools SDKをご購入されたお客様のご希望により開示しています。詳細はお問い合わせください(メール)。
(記載の会社名および製品名は、各社の登録商標および商標です。)

