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

PDF to Image Converter(画像に変換) C++サンプルと解説

「PDF to Image Converter」は、PDF文書を単一(TIFF、JPEG他)または、複数ページの画像(TIFF)または、画像化されたPDFに変換する機能を アプリケーションに追加するライブラリ(API) です。

機能特徴
  • 単一または複数の画像を生成
  • 画像フォーマット:TIFF、JPEG、JBIG2、JPEG2000、PNG、GIF、BMP など
  • ラスタライズされたPDF文書を作成可能
  • PDF文書の復号と暗号化可能
  • 画像フィルター(スーパーサンプリング、バイキュービック、バイリニア)の設定でエイリアスやモアレを低減
  • 色空間(グレースケール、RGB、CMYK、インデックス)選択可
  • 解像度、色数 設定
  • 非可逆圧縮やロスレスJPEG2000またはJBG2圧縮を選択可
  • 画質やサイズ(非可逆圧縮)の最適化
  • ハーフトーン方式(Floyd Steinberg、half-tone matrixなど)を選択可
  • 微細なテキスト文字の線幅を太くする
日本語マニュアル( HTML形式PDF形式 )をご参照ください。

PDF to Image Converter 機能概要はこちらです。
サンプル( 他のC++サンプルC#VB6Javaコマンドライン(shell) )を公開しています。
無償評価版(リンク先は英語)はこちらです。 ダウンロード手順
価格見積り

廉価(低価格)版
PDFを画像に変換するライブラリの機能を限定した廉価(低価格)版を参照してください。

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

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

C++のサンプルと解説

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "pdf2imgapi_c.h"

//#pragma comment(lib,"Pdf2ImgOCX.lib")  //従来のレンディング・エンジン
#pragma comment(lib,"Pdf2ImgAPI.lib")    //新しいレンディング・エンジン

int main(int argc, char* argv[])
{
    TPdf2Img* pDocument;
    int   iPage;
    int   iResult;
    int   iLen;
    int   iNr;
    char  cPageNo[8];
    char  cOut[256];
    char* cExt;
    int   iOnePer   = 0;
    int   iPageFrom = 1;
    int   iPageTo   = 100000;
    float fDPI    = 96.0f;
    TPDFErrorCode uLastError = 0;

    // 引数チェック
    if(argc > 1){
       iNr = 1;
       while(iNr < argc && argv[iNr][0] == '-'){
           if(strcmp("-1", argv[iNr]) == 0)
              iOnePer = 1;
           else if(strcmp("-d", argv[iNr]) == 0 && iNr+1<argc)
              fDPI = (float)atoi(argv[++iNr]);
           else if(strcmp("-pg", argv[iNr]) == 0 && iNr+2<argc){
              iPageFrom = atoi(argv[++iNr]);
              iPageTo = atoi(argv[++iNr]);
           }
           else fprintf(stderr, "不明なオプション: %s\n", argv[iNr]);
           iNr++;
       }
    }
    if(argc < 2){
        printf("Usage: pdf2imgsample [options] input.pdf output.(img)");
        return 3;
    } 

    // 初期化
    Pdf2ImgInitialize();

    // インスタンス生成
    pDocument = Pdf2ImgCreateObject();

    // PDF文書をオープン
    if(!Pdf2ImgOpenA(pDocument, argv[argc-2], "")){
        uLastError = Pdf2ImgGetErrorCode(pDocument);
        if(uLastError == PDF_E_PASSWORD)
            printf("PDFファイル %s はパスワードが必要です\n", argv[argc-2]);
        else{
            printf("PDFファイル %s オープンエラー\n", argv[argc-2]);
            printf("Error 0x%X\n", uLastError);
        }
        return 1;
    }

    // 向きを指定
    Pdf2ImgSetRotate(pDocument, eRotateAttribute);

    // 画像の形式を取得
    iLen = (int) strlen(argv[argc-1]);
    if(iLen > 3){
        if(strncmp(argv[argc-1]+iLen-4, ".", 1) == 0)
            cExt = argv[argc-1]+iLen-3;
        else if(strncmp(argv[argc-1]+iLen-5, ".", 1) == 0)
            cExt = argv[argc-1]+iLen-4;
        else{
            fprintf(stderr, "ファイルタイプが認識できません\n");
            return 3;
        }
    }else 
        return 3;

    // 画像にタイプがTIFFの場合は、LZWで圧縮する
    Pdf2ImgSetCompression(pDocument, eComprLZW);

    Pdf2ImgSetDPI(pDocument, fDPI);
    if(strncmp(cExt, "tif", 3) == 0 && strncmp(cExt, "tiff", 4) == 0 && !iOnePer){
        // 複数ページの画像を生成
        if(!Pdf2ImgCreateImage(pDocument, argv[argc-1])){
            printf("出力ファイル %s を作成できません\n",argv[argc-1]);
            return 2;
        }
        for(iPage = iPageFrom; iPage <= (iPageTo < Pdf2ImgGetPageCount(pDocument) ? iPageTo : Pdf2ImgGetPageCount(pDocument)); iPage++)
            iResult = Pdf2ImgRenderPage(pDocument, iPage);
        iResult = Pdf2ImgCloseImage(pDocument);
    }else{
        // ページごとに別のファイルを生成
        for(iPage = iPageFrom; iPage <= (iPageTo < Pdf2ImgGetPageCount(pDocument) ? iPageTo : Pdf2ImgGetPageCount(pDocument)); iPage++){
            // 出力ファイルを生成
            strcpy(cOut, argv[argc-1]);
            cOut[iLen-strlen(cExt)-1] = '\0';
            strcat(cOut, _itoa(iPage, cPageNo, 10));
            strcat(cOut, ".");
            strcat(cOut, cExt);

            if(!Pdf2ImgCreateImage(pDocument, cOut)){
                printf("出力ファイル %s を作成できません\n",cOut);
                return 2;
            }
            iResult = Pdf2ImgRenderPage(pDocument, iPage);
            iResult = Pdf2ImgCloseImage(pDocument);
        }
    }

    // ファイルをクローズし、インスタンスを開放する
    iResult = Pdf2ImgClose(pDocument);
    Pdf2ImgDestroyObject(pDocument);
    Pdf2ImgUnInitialize();

    return 0;
}

サンプルコード

 C++ PDF to Image サンプル (MS Visual Studio 2008 Project) P2Icpp_v2.zip

ご質問、お問い合わせ

 メールで 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 Prep Tool Suite
PDF Optimizer
PDF Command Line Suite
PDF Extract
PDF Viewr サンプル
C++ サンプル
画像に変換
単一画像に変換
複数ページ画像に変換
画像のPDFに変換
一般的なアプリケーション
C# サンプル
VB6.0 サンプル
Java サンプル
コマンドライン サンプル