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

PDF Prep Tool Suite 画像追加C++サンプル

「PDF Prep Tool Suite」ソフトは、PDF文書を作成、編集、分割、統合するためのAPI(ライブラリ)です。

PDF文書にテキスト・コンテント、画像、ベクタ・グラフィックスを追加します。 さらに、インターラクティブな要素(ハイパー・リンク、フォーム・フィールド、ブックマークなど)を追加し処理します。

PDF文書は、新たに生成することができます。プロパティ(位置、フォント、サイズ、色など)は自由に選択できます。 作成されたPDF文書には、暗号化やWebの表示用に最適化が施されます。

機能概要はこちらです。
無償評価版(リンク先は英語)はこちらです。 ダウンロード手順
他のC++サンプルC#サンプルを公開しています。
PDF Prep Tool Suite ソフト 購入(価格)

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

 ライブラリ(評価版API)は無償でダウンロード(試用)できますので、PDF Prep Tool Suiteダウンロード手順を参照してダウンロードください。
 ファイルをダウンロードしてから、インストールもしくは適当なフォルダーに解凍します。以下のようなフォルダーができあがりますので、適宜ご利用ください。
binライブラリやライセンスマネージャーなど
doc使用説明書やjavadocなど
includeC/C++用のヘッダー(.h)ファイル
jarPrepTool.jar、I2PA.jar(Javaのラッパー)
libC/C++用のlibファイル
ご注意ください:サンプル(英語版)はPDF Tools AG社のページからダウンロードできますが、それを動作させるためにはコードの変更が必要な場合があります。
以下のサンプルは、正しい動作を確認しています。ソースコードはこちらからダウンロードできます。

無償評価版と共にダウンロードしたライセンスキーをbin/LicenseManager.exeを使って登録してください。 ライセンスキーの登録方法はこちらです。

サンプルの実行前に、bin/pdprep32.dll、bin/Img2PdfAPI.dllをサンプル実行イメージと同じフォルダーにコピーしてください。文字化けする場合は、bin/pdcjk.dllも同様にコピーしてください。
COMインターフェースで利用する場合は、bin/pdprep32.dll、bin/Img2PdfAPI.dllをregsvr32.exeを使って登録してください。なお、64ビット版Windowsの場合は、WOW64/regsvr32.exeを使って登録してください。

画像を追加するC++サンプルと解説

画像が追加された新しいPDF文書を新たに作成するサンプルです。
#include <stdio.h>
#include <windows.h>
#include "img2pdfapi_c.h"
#include "pdprep.h"

#pragma comment(lib,"pdprep32.lib")
#pragma comment(lib,"Img2PdfAPI.lib")

static int iCompression[] =
{
    0,  // eComprRaw
    1,  // eComprJPEG
    0,  // eComprFlate
    0,  // eComprLZW
    2,  // eComprGroup3
    3,  // eComprGroup3_2D
    4,  // eComprGroup4
    5,  // eComprJBIG2
    1,  // eComprJPEG2000
    0   // eComprUnknown
};

int main(int argc, char* argv[])
{
    TPdfCodec*      codec;
    int             result;
    PTError         TheError;
    Handle          doc;
    ContentHandle   hPage;

    int             width, height, imageSize;
    short           bits, isColor, compression;       
    TPDFByteArray   *image, *mask, *palette;
    char            *imageData, *maskdata, *palettedata;

    // 引数チェック
    if (argc < 3)
    {
        printf("Usage: image input.img output.pdf");
        return 3;
    } 

    // 初期化
    PTInitialize();

    // PDFを生成
    doc = PDocNew(argv[2], 0, 0, &TheError);
    if (TheError != PTSuccess){
        printf("error creating PDF file %s...\n",argv[2]);
        return 2;
    }

    // テキストを追加
    hPage = PDocGetContentHandle(doc);
    PConSetFont(hPage, "Helvetica", 15);
    PConSetTm(hPage, 1, 0, 0, 1, 50.0, 100.0);
    PConPutText(hPage, argv[1]);

    // コーデック インスタンスを生成
    Img2PdfInitialize();
    codec = PdfCodecCreateObject();

    // 画像データをオープン
    if (!PdfCodecOpenA(codec, argv[1])){
        printf("コーデックを %s から生成できません\n",argv[1]);
        return 1;
    }

    // ページ数を指定
    PdfCodecSetPage(codec, 1);

    // 画像情報の取得
    width       = PdfCodecGetWidth(codec);
    height      = PdfCodecGetHeight(codec);
    bits        = (short) PdfCodecGetBitsPerComponent(codec);
    isColor     = PdfCodecGetColorSpace(codec) != eColorGray && PdfCodecGetColorSpace(codec) != eColorGrayA;
    image       = PdfCodecGetSamples(codec);
    imageData   = (char*)(image ? image->m_pData : NULL);
    imageSize   = image ? image->m_nLength : 0;
    palette     = PdfCodecGetPalette(codec);
    palettedata = (char*)(palette ? palette->m_pData : NULL);
    compression = iCompression[PdfCodecGetCompression(codec)];
    mask        = PdfCodecGetMask(codec);
    maskdata    = (char*)(mask ? mask-$gt;m_pData : NULL);

    // 画像生成
    PDocCreateImage(doc, width, height, bits, isColor, imageData, imageSize, palettedata, compression, maskdata);

    // 生成した画像を追加
    PConPrintImage(hPage, 1, 50, 150, PdfCodecGetWidth(codec) * 0.75f, PdfCodecGetHeight(codec) * 0.75f);

    // インスタンスを開放
    PDocClose(doc);
    result = PdfCodecClose(codec);

    PdfCodecDestroyObject(codec);
    Img2PdfUnInitialize();
    return 0;
}
このサンプルでは、以下の手順でPDFを新規に作成します。
  1. 初期化
  2. 出力ファイルを作成
  3. テキスト追加
  4. コーデック インスタンスを生成
  5. 画像ファイルを開く
  6. 画像オブジェクトを生成
  7. 画像オブジェクトをPDFに追加
PTInitialize 初期化
PDocNew( ) 出力のPDF文書生成とそのハンドルを取得
引数に以下の値を設定します。
第一引数作成するPDF文書のファイル(パス)名
第二引数作成するPDF文書のページ幅(ポイント単位)
第三引数作成するPDF文書のページ高さ(ポイント単位)
第四引数エラーコードが格納されるインスタンス
PDocGetContentHandle( ) 生成されたページのハンドルを取得する
PConSetFont( ) フォントを指定
ここでは、Headerレイヤーにテキスト文字を追加する(PConPutText)ためにフォントを指定します。PConPutTextをコールする前にフォントを指定しなければなりません。
引数に以下の値を設定します。
第一引数テキストの書き込み先インスタンス
第二引数フォントの名前
第三引数フォントのサイズ
Acrobatにビルトインされたフォント(Helvetica、Helvetica-Bold、Helvetica-Oblique、Times-Roman、Times-Italic、Times-Bold、Courier、Courier-Oblique、Courier-Bold、Symbol、ZapfDingbats)は、この例のように利用できます。 これ以外のフォントや日本語フォントを利用する場合は、日本語フォントのテンプレートを参照してください。
PConSetTm( ) テキスト配置の変換行列を指定
引数に以下の値を設定します。
第一引数テキストの書き込み先インスタンス
第二引数注1参照
第三引数注1参照
第四引数注1参照
第五引数注1参照
第六引数テキストの書き出しX座標
第七引数テキストの書き出しY座標
注1)第二引数から第五引数の値でテキストの回転を指定します。[1 0 0 1]を指定すると、テキストを左から右へ横方向に書き出します。文字列を襷がけのように書き出す方法を参照してください。
PConPutText( ) 書き出す文字列を指定
引数に以下の値を設定します。
第一引数テキストの書き込み先インスタンス
第二引数書き出す文字列
PdfCodecCreateObject( ) コーデック インスタンスを生成
PdfCodecOpenA( ) 画像データを開く
PdfCodecSetPage( ) ページを指定
PdfCodecGetWidth( ) 画像の幅を取得
PdfCodecGetHeight( ) 画像の高さを取得
PdfCodecGetBitsPerComponent( ) 画素あたりのビット数を取得
PdfCodecGetColorSpace( ) 色空間を取得
PdfCodecGetSamples( ) サンプル数を取得
PdfCodecGetPalette( ) パレットを取得
PdfCodecGetCompression( ) 圧縮率を取得
PdfCodecGetMask( ) マスクを取得
PDocCreateImage( ) 画像のobjectを生成
PConPrintImage( ) 生成した画像をPDF文書に追加

サンプルコード

 C++ PDF Prep Tool Suite サンプル (MS Visual Studio 2008 Project) PtsCppSamples.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 Viewer
PDF Viewer-L
PDF Prep Tool Suite
PDF Optimization
PDF Command Line Suite
PDF Extract
PDF Easy Parse
株)トラスト・ソフトウェア・システム
暗号化・電子署名・タイムスタンプ ライブラリ作成します。
お問い合わせください。