PDF to Image Converter(画像に変換) サンプル

PDF to Image Converter(画像に変換)

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

機能特徴
  • 単一または複数の画像を生成
  • 画像フォーマット:
    TIFF、JPEG、PNG、GIF、BMP、EPS、JBIG2、JPEG2000、Extended JPEG2000、PBM
  • PDF文書作成:
    ラスタライズ(画像化)されたPDF
  • PDF文書の復号と暗号化可能
  • 画像フィルター(エイリアスやモアレを低減):
    スーパーサンプリング、バイキュービック、バイリニア
  • 色空間:
    グレースケール、RGB、CMYK、インデックス
  • 解像度、色数 設定
  • 圧縮画像:
    JPEG(非可逆圧縮)、JPEG2000、JBG2(ロスレス圧縮可能)
  • 画質やサイズ(非可逆圧縮)の最適化
  • ハーフトーン(ディザ)方式:
    Floyd Steinberg、Halftone Block、Halftone Continuous、Atkinson)
  • 微細なテキスト文字の線幅を太くする
PDF to Image Converter 機能概要

C# サンプルC/C++ サンプル

他のサンプル(英文) - ダウンロードしたサンプルコードには評価用ライセンスキーが含まれます。

無償評価版(リンク先は英語)

価格見積り

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

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

C/C++のサンプルと解説

PDF文書をJPEG画像ファイルに変換

PDF文書の各ページを単一のJPEG画像ファイルに変換するサンプルです。JPEG圧縮の品質を指定することができます。

C#C/C++ ダウンロード
// 初期化
pConverter = Pdf2ImgCreateObject();

// 入力ファイルをオープン
if (!Pdf2ImgOpen(pConverter, szInputPath, _T("")))
{
    _tprintf(_T("入力ファイル %s をオープンできません。 %s (エラーコード: 0x%08x).\n"),
        szOutputPath, Pdf2ImgGetErrorMessage(pConverter), Pdf2ImgGetErrorCode(pConverter));
    iReturnValue = 1;
    goto cleanup;
}

// 画像品質を指定
Pdf2ImgSetImageQuality(pConverter, iQuality);

// 入力PDFの全ページを繰り返し、その都度JPEG画像ファイルを作成
for (int iPage = 1; iPage <= Pdf2ImgGetPageCount(pConverter); iPage++)
{
    // 出力ファイルの名前と拡張子
    _tcstok(szOutputPath, _T("."));
    _stprintf(szImagePath, _T("%s%d.jpg"), szOutputPath, iPage);

    // 出力のJPEG画像ファイルを生成
    if (!Pdf2ImgCreateImage(pConverter, szImagePath))
    {
        _tprintf(_T("出力画像ファイル %s を生成できません。 %s (エラーコード: 0x%08x).\n"),
            szInputPath, Pdf2ImgGetErrorMessage(pConverter), Pdf2ImgGetErrorCode(pConverter));
        iReturnValue = 1;
        goto cleanup;
    }

    // PDFのページを出力ファイルにJPEGレンダリング
    if (!Pdf2ImgRenderPage(pConverter, iPage))
    {
        _tprintf(_T("PDFファイル %s のページ %d をJPEGファイル %s にレンダリングできません。 %s (エラーコード: 0x%08x).\n"),
            szInputPath, iPage, szImagePath, Pdf2ImgGetErrorMessage(pConverter), Pdf2ImgGetErrorCode(pConverter));
        iReturnValue = 1;
        goto cleanup;
    }

    // 出力ファイルをクローズ
    if (!Pdf2ImgCloseImage(pConverter))
    {
        _tprintf(_T("出力ファイル %s をクローズできません。 %s (エラーコード: 0x%08x).\n"),
            szImagePath, Pdf2ImgGetErrorMessage(pConverter), Pdf2ImgGetErrorCode(pConverter));
        iReturnValue = 1;
        goto cleanup;
    }
}
_tprintf(_T("終了\n"));

cleanup:
Pdf2ImgClose(pConverter);
Pdf2ImgDestroyObject(pConverter);
Pdf2ImgUnInitialize();

return iReturnValue;
C#C/C++ ダウンロード
// 初期化
using (Converter converter = new Converter())
{
    // 入力ファイルをオープン
    if (!converter.Open(inputPath, ""))
        throw new Exception(String.Format("入力ファイル {0} をオープンできません。 " + 
            "{1} (エラーコード: 0x{2:x}).", inputPath, converter.ErrorMessage, converter.ErrorCode));

    // 画像品質を指定
    converter.ImageQuality = quality;

    // 入力PDFの全ページを繰り返し、その都度JPEG画像ファイルを作成
    for (int pageNo = 1; pageNo <= converter.PageCount; pageNo++)
    {
        // 出力ファイルの名前と拡張子
        string imagePath = Path.ChangeExtension(outputPath, null) + pageNo.ToString() + ".jpg";

        // 出力のJPEG画像ファイルを生成
        if (!converter.CreateImage(imagePath))
            throw new Exception(String.Format("出力画像ファイル {0} を生成できません。 {1} " + 
                "(エラーコード: 0x{2:x}).", imagePath, converter.ErrorMessage,
                converter.ErrorCode));

        // PDFのページを出力ファイルにJPEGレンダリング
        if (!converter.RenderPage(pageNo))
            throw new Exception(String.Format("PDFファイル {1} のページ {0} をJPEGファイル {2} にレンダリングできません。" + 
                " {3} (エラーコード: 0x{4:x}).", pageNo, inputPath, imagePath, 
                converter.ErrorMessage, converter.ErrorCode));

        // 出力ファイルをクローズ
        if (!converter.CloseImage())
            throw new Exception(String.Format("出力ファイル {0} をクローズできません。 {1} " + 
                "(エラーコード: 0x{2:x}).", imagePath, converter.ErrorMessage, converter.ErrorCode));
    }
}

PDF文書をPNG画像ファイルに変換

PDF文書の各ページを単一のPNG画像ファイルに変換するサンプルです。

C#C/C++ ダウンロード
// 初期化
pConverter = Pdf2ImgCreateObject();

// 入力ファイルをオープン
if (!Pdf2ImgOpen(pConverter, szInputPath, _T("")))
{
    _tprintf(_T("入力ファイル %s をオープンできません。 %s (エラーコード: 0x%08x).\n"),
        szOutputPath, Pdf2ImgGetErrorMessage(pConverter), Pdf2ImgGetErrorCode(pConverter));
    iReturnValue = 1;
    goto cleanup;
}

// 入力PDFの全ページを繰り返し、その都度PNG画像ファイルを作成
for (int iPage = 1; iPage <= Pdf2ImgGetPageCount(pConverter); iPage++)
{
    // 出力ファイルの名前と拡張子
    _tcstok(szOutputPath, _T("."));
    _stprintf(szImagePath, _T("%s%d.png"), szOutputPath, iPage);

    // 出力のPNG画像ファイルを生成
    if (!Pdf2ImgCreateImage(pConverter, szImagePath))
    {
        _tprintf(_T("出力ファイル %s を生成できません。 %s (エラーコード: 0x%08x).\n"),
            szImagePath, Pdf2ImgGetErrorMessage(pConverter), Pdf2ImgGetErrorCode(pConverter));
        iReturnValue = 1;
        goto cleanup;
    }

    // PDFのページを出力ファイルにPNGレンダリング
    if (!Pdf2ImgRenderPage(pConverter, iPage))
    {
        _tprintf(_T("PDFファイル %s のページ %d をJPEGファイル %s にレンダリングできません。 %s (エラーコード: 0x%08x).\n"),
            szInputPath, iPage, szImagePath, Pdf2ImgGetErrorMessage(pConverter), Pdf2ImgGetErrorCode(pConverter));
        iReturnValue = 1;
        goto cleanup;
    }

    // 出力ファイルをクローズ
    if (!Pdf2ImgCloseImage(pConverter))
    {
        _tprintf(_T("出力ファイル %s をクローズできません。 %s (エラーコード: 0x%08x).\n"),
            szImagePath, Pdf2ImgGetErrorMessage(pConverter), Pdf2ImgGetErrorCode(pConverter));
        iReturnValue = 1;
        goto cleanup;
    }
}
_tprintf(_T("終了\n"));

cleanup:
Pdf2ImgClose(pConverter);
Pdf2ImgDestroyObject(pConverter);
Pdf2ImgUnInitialize();

return iReturnValue;
}
C#C/C++ ダウンロード
// 初期化
using (Converter converter = new Converter())
{
    // 入力ファイルをオープン
    if (!converter.Open(inputPath, ""))
        throw new Exception(String.Format("入力ファイル {0} をオープンできません。 " + 
            "{1} (エラーコード: 0x{2:x}).", inputPath, converter.ErrorMessage, converter.ErrorCode));

    // 入力PDFの全ページを繰り返し、その都度PNG画像ファイルを作成
    for (int pageNo = 1; pageNo <= converter.PageCount; pageNo++)
    {
        // 出力ファイルの名前と拡張子
        string imagePath = Path.ChangeExtension(outputPath, null) + pageNo.ToString() + ".png";

        // 出力のPG画像ファイルを生成
        if (!converter.CreateImage(imagePath))
            throw new Exception(String.Format("出力画像ファイル {0} を生成できません。 {1} " + 
                "(エラーコード: 0x{2:x}).", imagePath, converter.ErrorMessage, converter.ErrorCode));

        // PDFのページを出力ファイルにPNGレンダリング
        if (!converter.RenderPage(pageNo))
            throw new Exception(String.Format("PDFファイル {1} のページ {0} をJPEGファイル {2} にレンダリングできません。 " + 
                " {3} (エラーコード: 0x{4:x}).", pageNo, inputPath, imagePath,
                converter.ErrorMessage, converter.ErrorCode));

        // 出力ファイルをクローズ
        if (!converter.CloseImage())
            throw new Exception(String.Format("出力ファイル {0} をクローズできません。 {1} " + 
                "(エラーコード: 0x{2:x}).", imagePath, converter.ErrorMessage, converter.ErrorCode));
    }
}

PDF文書を複数ページTIFF画像ファイルに変換

PDF文書の全ページを複数ページTIFF画像ファイルに変換します。
TIFF画像には圧縮アルゴリズムを指定でき、JPEG圧縮を指定した場合は画像品質を指定できます。

C#C/C++ ダウンロード
// 初期化
pConverter = Pdf2ImgCreateObject();

// 入力ファイルをオープン
if (!Pdf2ImgOpen(pConverter, szInputPath, _T("")))
{
    _tprintf(_T("入力ファイル %s をオープンできません。 %s (エラーコード: 0x%08x).\n"),
        szInputPath, Pdf2ImgGetErrorMessage(pConverter), Pdf2ImgGetErrorCode(pConverter));
    iReturnValue = 1;
    goto cleanup;
}

// 出力ファイルの名前と拡張子
_tcstok(szOutputPath, _T("."));
_stprintf(szImagePath, _T("%s.tif"), szOutputPath);

// 圧縮アルゴリズムと画像品質を指定
Pdf2ImgSetCompression(pConverter, eCompression);
Pdf2ImgSetQuality(pConverter, iQuality);

// 出力のTIFF画像ファイルを生成
if (!Pdf2ImgCreateImage(pConverter, szImagePath))
{
    _tprintf(_T("出力ファイル %s を生成できません。 %s (エラーコード: 0x%08x).\n"),
        szImagePath, Pdf2ImgGetErrorMessage(pConverter), Pdf2ImgGetErrorCode(pConverter));
    iReturnValue = 1;
    goto cleanup;
}

// PDFの全ページを複数ページTIFF画像ファイルに変換
for (int iPage = 1; iPage <= Pdf2ImgGetPageCount(pConverter); iPage++)
{
    // ページをTIFF画像にレンダリング
    if (!Pdf2ImgRenderPage(pConverter, iPage))
    {
        _tprintf(_T("PDFファイル %s のページ %d をTIFFファイル %s に出力できません。 %s (エラーコード: 0x%08x).\n"),
            szInputPath, iPage, szImagePath, Pdf2ImgGetErrorMessage(pConverter), Pdf2ImgGetErrorCode(pConverter));
        iReturnValue = 1;
        goto cleanup;
    }
}
// 出力ファイルをクローズ
if (!Pdf2ImgCloseImage(pConverter))
{
    _tprintf(_T("出力ファイル %s をクローズできません。 %s (エラーコード: 0x%08x).\n"),
        szImagePath, Pdf2ImgGetErrorMessage(pConverter), Pdf2ImgGetErrorCode(pConverter));
    iReturnValue = 1;
    goto cleanup;
}
C#C/C++ ダウンロード
// 初期化
using (Converter converter = new Converter())
{
    // 入力ファイルをオープン
    if (!converter.Open(inputPath, ""))
        throw new Exception(String.Format("入力ファイル {0} をオープンできません。 {1} (エラーコード: {2}).",
            inputPath, converter.ErrorMessage, converter.ErrorCode));

    // 圧縮アルゴリズムと画像品質を指定
    converter.Compression = compression;
    converter.ImageQuality = quality;

    // 出力のTIFF画像ファイルを生成
    if (!converter.CreateImage(outputPath))
        throw new Exception(String.Format("出力ファイル  {0} を生成できません。 " +
            "{1} (エラーコード: {2}).", outputPath, converter.ErrorMessage, converter.ErrorCode));

    // PDFの全ページを複数ページTIFF画像ファイルに変換
    for (int pageNo = 1; pageNo <= converter.PageCount; pageNo++)
    {
        // ページをTIFF画像にレンダリング
        if (!converter.RenderPage(pageNo))
            throw new Exception(String.Format("PDFファイル {1} のページ {0} をTIFFファイル {2} に出力できません。 " +
                " {3} (エラーコード: {4}).", pageNo, inputPath, outputPath,
                converter.ErrorMessage, converter.ErrorCode));
    }
    // 出力ファイルをクローズ
    if (!converter.CloseImage())
        throw new Exception(String.Format("出力ファイル {0} をクローズできません。 " +
            "{1} (エラーコード: {2}).", outputPath, converter.ErrorMessage, converter.ErrorCode));
}

PDF文書をFAX画像ファイルに変換

PDF文書の全ページを2値(2色)の複数ページTIFF画像ファイルに変換するサンプルです。
2値化にあたってはFloyd-Steinberg手法でのディザ処理し、Faxの TIFF Class F を設定します。
C#C/C++ ダウンロード
// 初期化
pConverter = Pdf2ImgCreateObject();

// 入力ファイルをオープン
if (!Pdf2ImgOpen(pConverter, szInputPath, _T("")))
{
    _tprintf(_T("入力ファイル %s をオープンできません。 %s (エラーコード: 0x%08x).\n"), szInputPath,
        Pdf2ImgGetErrorMessage(pConverter), Pdf2ImgGetErrorCode(pConverter));
    iReturnValue = 1;
    goto cleanup;
}

// ディザ指定
Pdf2ImgSetDithering(pConverter, eDithering);
Pdf2ImgSetBitsPerPixel(pConverter, 1);

Pdf2ImgSetFitPage(pConverter, 1);
Pdf2ImgSetCenter(pConverter, 1);
TPDFRendererOption2 renderOptions = Pdf2ImgGetOptions2(pConverter);
renderOptions |= eOptionNoAntialiasing | eOptionUseBoxFilter | eOptionFitPaths;
Pdf2ImgSetOptions2(pConverter, renderOptions);
Pdf2ImgSetRotateMode(pConverter, eRotatePortrait);

// TIFF Class F (Fax) 指定
Pdf2ImgFaxHSetting(pConverter);

// 出力画像ファイル生成
if (!Pdf2ImgCreateImage(pConverter, szOutputPath))
{
    _tprintf(_T("出力画像ファイル %s を生成できません。 %s (エラーコード: 0x%08x).\n"), szOutputPath,
        Pdf2ImgGetErrorMessage(pConverter), Pdf2ImgGetErrorCode(pConverter));
    iReturnValue = 1;
    goto cleanup;
}

// PDFの全ページを複数ページTIFF画像ファイルに変換
for (int iPage = 1; iPage <= Pdf2ImgGetPageCount(pConverter); iPage++)
{
    // PDFのページを出力ファイルにレンダリング
    if (!Pdf2ImgRenderPage(pConverter, iPage))
    {
        _tprintf(_T("PDFファイル %s のページ %d をTIFFファイル %s に出力できません。 %s (エラーコード: 0x%08x).\n"),
            szInputPath, iPage, szOutputPath, Pdf2ImgGetErrorMessage(pConverter),
            Pdf2ImgGetErrorCode(pConverter));
        iReturnValue = 1;
        goto cleanup;
    }
}

// 出力ファイルをクローズ
if (!Pdf2ImgCloseImage(pConverter))
{
    _tprintf(_T("出力ファイル %s をクローズできません。 %s (エラーコード: 0x%08x).\n"), szOutputPath,
        Pdf2ImgGetErrorMessage(pConverter), Pdf2ImgGetErrorCode(pConverter));
    iReturnValue = 1;
    goto cleanup;
}
C#C/C++ ダウンロード
// 初期化
using (Converter converter = new Converter())
{
    // 入力ファイルをオープン
    if (!converter.Open(inputPath, ""))
        throw new Exception(String.Format("入力ファイル {0} をオープンできません。 " +
            "{1} (エラーコード: 0x{2:x}).", inputPath, converter.ErrorMessage, converter.ErrorCode));

    // ディザ指定
    converter.Dithering = dithering;
    converter.BitsPerPixel = 1;

    converter.FitPage = true;
    converter.Center = true;
    PDFRendererOption2 rendererOptions = converter.Options2;
    rendererOptions |= PDFRendererOption2.eOptionNoAntialiasing |
        PDFRendererOption2.eOptionUseBoxFilter | PDFRendererOption2.eOptionFitPaths;
    converter.Options2 = rendererOptions;
    converter.RotateMode = PDFRotateMode.eRotatePortrait;

    // TIFF Class F (Fax) 指定
    converter.FaxHSetting();

    // 出力画像ファイル生成
    if (!converter.CreateImage(outputPath))
        throw new Exception(String.Format("出力画像ファイル {0} を生成できません。 {1} " +
            "(エラーコード: 0x{2:x}).", outputPath, converter.ErrorMessage, converter.ErrorCode));

    // PDFの全ページを複数ページTIFF画像ファイルに変換
    for (int pageNo = 1; pageNo <= converter.PageCount; pageNo++)
    {
        // PDFのページを出力ファイルにレンダリング
        if (!converter.RenderPage(pageNo))
            throw new Exception(String.Format("PDFファイル {1} のページ {0} をTIFFファイル {2} に出力できません。" +
                " {3} (エラーコード: 0x{4:x}).", pageNo, inputPath, outputPath,
                converter.ErrorMessage, converter.ErrorCode));
    }

    // 出力ファイルをクローズ
    if (!converter.CloseImage())
        throw new Exception(String.Format("出力ファイル {0} をクローズできません。 {1} " +
            "(エラーコード: 0x{2:x}).", outputPath, converter.ErrorMessage, converter.ErrorCode));
}

ご質問、お問い合わせ

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

PDF-Tools サンプル

PDF Toolsとは

PDF/Aとは