ホーム > PDF Tools 一覧 > PDF Tools ライト > PDF Easy Parse > C++サンプル > バージョン取得

PDF Easy Parse C++ PDF文書のバージョンを取得するサンプル

PDF Easy Parse は、PDF構造の解析専用ツール(ライブラリ)です。このPDF Easy Parseライブラリを使えばPDF文書を解析したり、必要な部分を取り出したりする機能を目的のアプリケーションに追加できます。

PDF Easy Parse 購入(価格)


ダウンロード:
PDF Easy Parse無償体験版は、以下からダウンロードしてください。利用許諾契約書をご確認のうえダウンロードしてください。ダウンロードしますと、利用許諾契約書に同意したものとみなします。
評価用ライセンスキーも必ずダウンロードしてください。


他のC++サンプルはこちらです。


インストール

無償体験版をダウンロードして解凍すると以下のようなフォルダーができます。

docライブラリの簡単な説明書
includeヘッダー
liblibおよびDLL
sample/CC言語用サンプル
sample/C++C++言語用サンプル

lib/PdfEasyParse.libを作成するアプリケーションにリンクしてください。lib/PdfEasyParse.dllをアプリケーションの実行ファイル(.exe)のあるフォルダーに配置してください。


1.1 PDF文書のバージョンを取得

PDF文書のバージョンは1.PDF構文にあるように、そのFile Headerに記載されています。
一般的には、以下のコードで記載されたPDF文書のバージョンを取得できます。PDF Easy Parseによる取得はこちらです。

#include <stdio.h>
#include <string.h>

#define PDF_VERSION_SIZE 8

int main(int argc, char* argv[])
{
    FILE    *fp;
    char    ver[ PDF_VERSION_SIZE+1 ];

    if( fopen_s( &fp, "HelloWorld.pdf", "rb" ) )
    {
        printf( "ファイルを開けません。\n" );
        return 1;
    }
    fread_s(ver, PDF_VERSION_SIZE, 1, PDF_VERSION_SIZE, fp);
    ver[ PDF_VERSION_SIZE ] = '\0';
    if( strncmp(ver, "%PDF-1.0", PDF_VERSION_SIZE)
        && strncmp(ver, "%PDF-1.1", PDF_VERSION_SIZE)
        && strncmp(ver, "%PDF-1.2", PDF_VERSION_SIZE)
        && strncmp(ver, "%PDF-1.3", PDF_VERSION_SIZE)
        && strncmp(ver, "%PDF-1.4", PDF_VERSION_SIZE)
        && strncmp(ver, "%PDF-1.5", PDF_VERSION_SIZE)
        && strncmp(ver, "%PDF-1.6", PDF_VERSION_SIZE)
        && strncmp(ver, "%PDF-1.7", PDF_VERSION_SIZE) )
    {
        printf("PDF文書のバージョンを確認できません\n");
        return 2;
    }
    printf("PDFのバージョンは、%sです\n", ver);

    return 0;
}

しかしながら、このようにして取得したバージョンは、必ずしもそのPDF文書のバージョンではありません。それは、Catalogディクショナリに記載されたバージョンが最新の(更新された)バージョンである可能性があるためです。
結果は、以下のように出力されます。

PDFのバージョンは、PDF-1.7です

1.2 PDF文書のバージョンを取得 - PdfEasyParseによるサンプル

PDF文書に記載された最新のバージョンをPdfEasyParseライブラリを使って取得します。
この方法によれば、PDF文書のバージョンが更新されている場合でも正しいバージョンを取得できます。
PDFデータの先頭にあるバージョンデータを取得する場合は、上記の手順で取得します。

#include "PEParse.h"

#pragma comment(lib,"PdfEasyParse.lib")

int main(int argc, char* argv[])
{
    TPEPHandle  *hPep;
    int         ret = 0;

    //初期化
    hPep = PEPInitialize( "ライセンスキー" );
    if (!hPep){
        fprintf(stderr, "初期化できません。\n");
        return 100;
    }

    //オープン
    if(!PEPOpen( hPep, "HelloWorld.pdf" )){
        fprintf(stderr, "Open Error\n");
        ret = 1;
        goto end_proc;
    }

    //PDF Version
    printf("PDF文書のバージョン: %s\n", PEPPdfVersionString(hPep));

end_proc:
    //後始末
    PEPDestroy( hPep );

    return ret;
}
PEPInitialize() 初期化します。
引数に以下を指定します。
第一引数ライセンスキー
第二引数(省略可)処理の内容をログするファイルのパス
第三引数(省略可)記録されるログのレベル
1以上の値を設定します。レベルは以下のとおりです。ここで指定された値より大きな値のレベルのログが記録されます。
記録のレベル
1重要なエラー
2~4エラー
5~9警告
10以上インフォメーション
PEPOpen() PDF文書を開きます。
引数に以下を指定します。
第一引数ハンドル
第二引数PDFファイルのパス
PEPPdfVersionString() PDFのバージョンが文字列で戻ります。
引数にハンドルを指定します。

結果は、以下のように出力されます。

PDF文書のバージョン: %PDF-1.7

参考:
PDF Easy Parseは、クロス・リファレンスがストリームに格納されたPDF文書であっても正しくそれを取得できます。クロス・リファレンス ストリームの詳細を参照してください。

>>>次のサンプル( PDFの終端(%%EOF)位置情報 )へ

サンプル コード

サンプルのコードは、以下からダウンロードしてください。

   PepSamples_2_0_2.zip

なお、サンプルコードを実行させるためには、PDF Easy Parseライブラリが必要です。別途ダウンロードしてください。


ご質問・お問い合わせ

メールで support@TrustSS.co.jp 宛てにお願いします。
または、質問のページからお送りいただくようお願いします。なお、ご質問・ご要望は、匿名でも送信できます。