PDF Prep Tool Suite 透かし追加C++サンプル

PDF文書にテキスト・コンテント、画像、ベクタ・グラフィックスを追加します。 さらに、インターラクティブな要素(ハイパー・リンク、フォーム・フィールド、ブックマークなど)を追加し処理します。
PDF文書は、新たに生成することができます。プロパティ(位置、フォント、サイズ、色など)は自由に選択できます。 作成されたPDF文書には、暗号化やWebの表示用に最適化が施されます。
無償評価版のダウンロードとインストール
ライブラリ(評価版API)は無償でダウンロード(試用)できますので、PDF Prep Tool Suiteダウンロード手順を参照してダウンロードください。
ファイルをダウンロードしてから、インストールもしくは適当なフォルダーに解凍します。以下のようなフォルダーができあがりますので、適宜ご利用ください。
ご注意ください:サンプル(英語版)はPDF Tools AG社のページからダウンロードできますが、それを動作させるためにはコードの変更が必要な場合があります。
以下のサンプルは、正しい動作を確認しています。ソースコードはこちらからダウンロードできます。
無償評価版と共にダウンロードしたライセンスキーをbin/LicenseManager.exeを使って登録してください。 ライセンスキーの登録方法はこちらです。
サンプルの実行前に、bin/pdprep32.dll、bin/Img2PdfAPI.dllをサンプル実行イメージと同じフォルダーにコピーしてください。文字化けする場合は、bin/pdcjk.dllも同様にコピーしてください。ファイルをダウンロードしてから、インストールもしくは適当なフォルダーに解凍します。以下のようなフォルダーができあがりますので、適宜ご利用ください。
bin | ライブラリやライセンスマネージャーなど |
doc | 使用説明書やjavadocなど |
include | C/C++用のヘッダー(.h)ファイル |
jar | PrepTool.jar、I2PA.jar(Javaのラッパー) |
lib | C/C++用のlibファイル |
以下のサンプルは、正しい動作を確認しています。ソースコードはこちらからダウンロードできます。
無償評価版と共にダウンロードしたライセンスキーをbin/LicenseManager.exeを使って登録してください。 ライセンスキーの登録方法はこちらです。
COMインターフェースで利用する場合は、bin/pdprep32.dll、bin/Img2PdfAPI.dllをregsvr32.exeを使って登録してください。なお、64ビット版Windowsの場合は、WOW64/regsvr32.exeを使って登録してください。
透かしを追加するC++サンプルと解説
PDF文書にウォーターマーク(透かし文字)が追加された、新しいPDF文書を作成するサンプルです。
日本語のウォーターマークを追加するには、フォントのテンプレートファイルmsfonts.pdfが必要な場合があります。 このテンプレートファイルには、MS-Mincho,MS-PMincho,MS-Gothic,MS-PGothicの4フォントが含まれています。これらのフォントに含まれている文字すべてを使えるようにしてあります。 そのため、ファイルサイズが14MBを超えるサイズになっています。このファイルのサイズを小さくするには、利用しないフォントや文字を削除します。 このような(フォントを削除したり、文字を削除したりする)処理は、PDF Optimizerなどが利用できます。無償で利用できる評価版を使って作成したPDFでもテンプレートファイルとして利用できます。
日本語のウォーターマークを追加するには、フォントのテンプレートファイルmsfonts.pdfが必要な場合があります。 このテンプレートファイルには、MS-Mincho,MS-PMincho,MS-Gothic,MS-PGothicの4フォントが含まれています。これらのフォントに含まれている文字すべてを使えるようにしてあります。 そのため、ファイルサイズが14MBを超えるサイズになっています。このファイルのサイズを小さくするには、利用しないフォントや文字を削除します。 このような(フォントを削除したり、文字を削除したりする)処理は、PDF Optimizerなどが利用できます。無償で利用できる評価版を使って作成したPDFでもテンプレートファイルとして利用できます。
#include <stdio.h> #include <math.h> #include "pdprep.h" #pragma comment(lib,"pdprep32.lib") int main(int argc, char* argv[]) { PTError TheError; Handle doc; InputHandle idoc; ContentHandle header; double angle; float s; float c; // 引数チェック if(argc < 3){ printf("usage: watermark PDF-InputFile PDF-OutputFile\n"); return 1; } // 初期化 PTInitialize(); // 出力ファイルをオープン doc = PDocNew(argv[2], 0, 0, &TheError); // ヘッダーハンドルを取得 header = PDocGetHeaderHandle(doc); // フォントテンプレートを開く // このPDFに目的の文字が無い場合は、ASCII 32(space)に置き換わる。 PDocInputOpen(doc, "msfonts.pdf"); // フォントを指定 PConSetFont(header, "MS-Mincho", 120); PConSetGray(header, 0.5f, 0.0f); PConSetLineWidth(header, 0.5f); // 入力ファイルをオープン idoc = IDocOpen(argv[1], &TheError); PDocAttach(doc, idoc); // rotation-matrix計算 angle = 60.0; s = (float) sin(angle * 3.14159 * 2.0 / 360.0); c = (float) cos(angle * 3.14159 * 2.0 / 360.0); PConSetTm(header, c, s, -s, c, 100.0, 100.0); // "outline"オペレータを指定 PConPutText(header, " "); PConTextOp(header, "1 Tr"); // テキストをヘッダーレイヤーに書く PDBSTR txt; txt.buf = L"日本語"; txt.len = wcslen(txt.buf); PConPutTextU(header, txt); // コピーして文書を閉じる PDocInputCopyAll(doc); PDocClose(doc); return 0; }
PTInitialize | 初期化 | |||||||||||||||||||||||||||
PDocNew( ) | 出力のPDF文書生成とそのハンドルを取得 引数に以下の値を設定します。
|
|||||||||||||||||||||||||||
PDocGetHeaderHandle( ) | Headerレイヤーのインスタンスを取得 Headerは、PDFのレイヤーでページの最上層に位置します。すべてのページで共通のレイヤーです。引数には、PDFのハンドルを指定します。 |
|||||||||||||||||||||||||||
PDocInputOpen( ) | 日本語フォントのテンプレートPDFを開く 標準で用意されていないフォント(日本語フォントなど)を指定する場合必要な文字およびフォントが含まれているPDF文書をテンプレートとして利用します。 引数に以下の値を設定します。
|
|||||||||||||||||||||||||||
PConSetFont( ) | フォントを指定 ここでは、Headerレイヤーにテキスト文字を追加する(PConPutText)ためにフォントを指定します。PConPutTextをコールする前にフォントを指定しなければなりません。 引数に以下の値を設定します。
|
|||||||||||||||||||||||||||
PConSetGray( ) | 線および塗りつぶしのグレーレベルを設定 引数に以下の値を設定します。
|
|||||||||||||||||||||||||||
PConSetLineWidth( ) | 線を描画する際の太さを設定 | |||||||||||||||||||||||||||
IDocOpen( ) | 入力PDFのハンドルを取得 この手順では、開いたPDFは独立に存在しています。引数に以下の値を設定します。
|
|||||||||||||||||||||||||||
PDocAttach( ) | 指定のPDFを出力となるPDFに関連付ける 引数に以下の値を設定します。
|
|||||||||||||||||||||||||||
PConSetTm( ) | テキスト配置の変換行列を指定 例では、文字列を斜めに襷がけのように表示します。引数に以下の値を設定します。(PDF構文 変換行列参照)
例のように、[cos( ) sin( ) -sin( ) cos( )]を指定すると、文字列が左下から右上に向かって襷がけのように表示されます。出力の例を参照してください。 |
|||||||||||||||||||||||||||
PConPutTextU( ) | テキストをヘッダーレイヤーに書く 引数に以下の値を設定します。
|
|||||||||||||||||||||||||||
PConTextOp( ) | 文字のレンダリングモードをPDFのコマンドで指定します。 サンプルでは、縁取りの文字を指定しています。 このメソッドで追加されるコマンドはチェックされません。しかし、“BT”と“ET”に囲まれることを確認します(PDFのテキスト構文)。レンダリングモードは以下の値を指定できます。
|
サンプルコード
C++ PDF Prep Tool Suite サンプル (MS Visual Studio 2008 Project) PtsCppSamples.zip
ご質問、お問い合わせ
(記載の会社名および製品名は、各社の登録商標および商標です。)