トラスト・ソフトウェア・システム
トラスト・ソフトウェア・システム

PDF Validator(PDF準拠検証) C++サンプル

PDF Validator 「PDF Validator」ソフトは、PDF文書がその規格、PDF/A文書がISO規格に準拠しているかチェックします。
文書交換や長期間保存されるビジネス文書などは、その構成がPDF/A(またはPDF)として正確であることが検証されるべきです。

検証 には以下が含まれます:
  • PDFおよびPDF/A規格に関する文書の検証
  • 検証レポート作成
  • 準拠と非準拠文書を分類
  • 企業の規程(コーポレートアイデンティティ、作成および処理に関してPDFソフトウェアに制限など)に準拠していることを確保

機能概要はこちらです。
無償評価版(リンク先は英語)はこちらです。 ダウンロード手順
 購入(価格)

無償評価版のダウンロードとインストール

 ライブラリ(評価版API)は無償でダウンロード(試用)できますので、PDF Validatorダウンロード手順を参照してダウンロードください。
 ファイルをダウンロードしてから、インストールもしくは適当なフォルダーに解凍します。以下のようなフォルダーができあがりますので、適宜ご利用ください。
binライブラリやライセンスマネージャーなど
doc使用説明書やjavadocなど
includeC/C++用のヘッダー(.h)ファイル
jarVALA.jar(Javaのラッパー)
libC/C++用のlibファイル
samples各種開発言語のサンプル
サンプルの実行前に、bin/PdfValidatorAPI.dllをサンプル実行イメージと同じフォルダーにコピーしてください。また、無償評価版と共にダウンロードしたライセンスキーをbin/LicenseManager.exeを使って登録してください。 ライセンスキーの登録方法はこちらです。

C++のサンプルと解説

#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include "pdfvalidatorapi_c.h"

int main(int argc, char* argv[])
{
    TPdfValidator* pDocument;
    TPdfValidatorError* pError;
    TPDFErrorCode iErrorCode;
    char* szMessage = NULL;
    int nLength;
    int nPageNum;
    int nGetCount;
    int iCategories;
    int iReturn = 0;
    int bIsConformant = 0;
    int bValidated;
    int i;

    if(argc < 2){
        printf("Usage: validate file.pdf\n"
            "return codes:\n"
            "    0: 成功\n"
            "    1: 入力ファイルが開けない\n"
            "    3: パラメーター エラー\n"
            "    4: 適合せず\n"
            "    5: 検証中止\n"
            "   10: ライセンス エラー\n"
            );
        return 4;
    } 

    PdfValidatorInitialize();

    // ライセンスのチェック
    if(!PdfValidatorGetLicenseIsValid()){
        printf("No valid license found.\n");
        return 10;
    }

    // インスタンス生成
    pDocument = PdfValidatorCreateObject();
    PdfValidatorSetReportingLevel(pDocument, 2);

    // 文書オープンと準拠レベルの指定
    if(PdfValidatorOpenA(pDocument, argv[1], "", ePDFA1b)){
        PdfValidatorSetStopOnError(pDocument, 0);

        // 文書の妥当性を検証
        bValidated = PdfValidatorValidate(pDocument);
        iErrorCode = PdfValidatorGetErrorCode(pDocument);
        if(bValidated != 0){
            // 適合性を確認
            if (iErrorCode != PDF_E_CONFORMANCE)
                bIsConformant = 1;
            else
            iReturn = 4;
        }else{
            printf("ドキュメントの検証に失敗しました。\n");
            printf("Error 0x%X\n", iErrorCode);
            return 5;
        }
    }else{
        iErrorCode = PdfValidatorGetErrorCode(pDocument);
        switch(iErrorCode){
        case PDF_E_PASSWORD:
            printf("このPDFファイル($s)は開くためにパスワード必要です。\n",argv[1]);
            break;

        case PDF_E_FILEOPEN:
        default:
            printf("ファイル(%s)のオープン エラー\n",argv[1]);
            printf("Error 0x%X\n", iErrorCode);
            break;
        }
        iReturn = 1;
    }

    // 検証結果を表示
    if(bIsConformant)
        printf("この文書は、要求された標準に準拠しています。\n");
    else
        printf("この文書は、要求された標準に準拠していません。\n");

    // エラー表示
    pError = PdfValidatorGetFirstError(pDocument);
    if(pError){
        printf("Errors: \n");
        printf("ErrorCode;ErrorMessage;PageNumber;Count\n");
    }

    while(pError){   
        // エラーコード
        iErrorCode = PdfValidatorErrorGetErrorCode(pError);
        
        // エラーメッセージ
        nLength   = PdfValidatorErrorGetMessageA(pError, szMessage, (int)NULL);
        szMessage = (char*) malloc(nLength);
        PdfValidatorErrorGetMessageA(pError, szMessage, nLength);
        
        // ページ番号と回数
        nPageNum  = PdfValidatorErrorGetPageNo(pError);
        nGetCount = PdfValidatorErrorGetCount(pError);

        // メッセージ表示
        printf("0x%0x;%s;%d;%d\n", iErrorCode, szMessage, nPageNum, nGetCount);

        free(szMessage);

        // 次のエラーを取得
        pError = PdfValidatorGetNextError(pDocument);
    }

    // カテゴリー表示
    iCategories = PdfValidatorGetCategories(pDocument);
    if(iCategories){
        printf("\nカテゴリー:\n");
        for(i = 0; i < 19; i++){
            TPDFConformanceCategory c = (TPDFConformanceCategory) (1 << i);
            if(c & iCategories){
                const char* szText = PdfValidatorGetCategoryTextA(pDocument, c);
                printf("%s\n", szText);
            }
        }
    }

    // 文書を閉じる
    PdfValidatorClose(pDocument);

    // インスタンスを開放
    PdfValidatorDestroyObject(pDocument);

    PdfValidatorUnInitialize();

    return iReturn;
}

ご質問、お問い合わせ

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

(記載の会社名および製品名は、各社の登録商標および商標です。)
PDF製品 C++サンプル
PDF Security
PDF Validator
PDF to PDF/A Converter
PDF to Image Converter
PDF Imager-LP
Image to PDF Converter
PDF Printer
PDF Viewer
PDF Viewer-L
PDF Prep Tool Suite
PDF Optimization
PDF Command Line Suite
PDF Extract
PDF Easy Parse
株)トラスト・ソフトウェア・システム
暗号化・電子署名・タイムスタンプ ライブラリ作成します。
お問い合わせください。