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

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を使って登録してください。 ライセンスキーの登録方法はこちらです。

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

参照設定

C#プロジェクトでは、以下のように.NET用DLLの参照を設定します。なお、サンプルは、基本的にコンソールアプリケーションです。
  1. C#プロジェクトを新規に作成します。
  2. PDF Prep Tool SuiteライブラリのNETラッパを参照する設定をします。
  3. Visual Studio C#のメインメニューで、「プロジェクト(P)」→「参照の追加(R)...」を選択します。
    以下のようなダイアログが表示されますので、解凍して作成されたフォルダーの「bin」に格納されている.NET用のDLLおよびpdprep32.dllを指定します。
    PDF Prep Tool参照設定

透かしを追加するC#サンプルと解説

 PDF文書にウォーターマーク(透かし文字)が追加された、新しいPDF文書を作成するサンプルです。
 日本語のウォーターマークを追加するには、フォントのテンプレートファイルmsfonts.pdfが必要な場合があります。 このテンプレートファイルには、MS-Mincho,MS-PMincho,MS-Gothic,MS-PGothicの4フォントが含まれています。これらのフォントに含まれている文字すべてを使えるようにしてあります。 そのため、ファイルサイズが14MBを超えるサイズになっています。このファイルのサイズを小さくするには、利用しないフォントや文字を削除します。 このような(フォントを削除したり、文字を削除したりする)処理は、PDF Optimizationなどが利用できます。
using System;
using PREPTOOLLib;

namespace wmk
{
    class Wmk
    {
        static void Main(string[] args)
        {
            //インスタンス生成
            PDoc doc = new PDoc();

            //出力ファイルを作成
            if (!doc.New("out.pdf", 0, 0))
            {
                Console.WriteLine("'output.pdf'を作成できません");
                Environment.Exit(1);
            }

            //ヘッダーインスタンスを取得
            content hd = doc.Header();

            //フォントテンプレートを開く
            //このPDFに目的の文字が無い場合は、ASCII 32(space)に置き換わる。
            doc.InputOpen("msfonts.pdf");

            //フォントを指定
            hd.SetFont("MS-Mincho", 120);
            hd.SetGrayLevel(.5f, 0);
            hd.SetLineWidth(.5f);

            //入力ファイルを開く
            IDoc iDoc = doc.Input();
            iDoc.Open("input.pdf", null);
            doc.Attach(iDoc);

            //文字列を回転
            float s = (float)Math.Sin(60.0 * 3.14159f * 2f / 360f);
            float c = (float)Math.Cos(60.0 * 3.14159f * 2f / 360f);
            hd.SetTm(c, s, -s, c, 100, 100);

            //"outline"オペレータを指定
            hd.PrintText(" ", 100, 100);
            hd.TextCmd("1 Tr");

            //テキストをヘッダーレイヤーに書く
            hd.PrintText("日本語", 100, 100);

            //コピーして文書を閉じる
            doc.InputCopyAll();
            doc.Close();
        }
    }
}
このサンプルでは、以下の手順でPDFを解析します。
  1. PDFを操作するインスタンスを生成
  2. 出力ファイルを作成
  3. ヘッダーインスタンスを取得
  4. フォントテンプレートを開く
  5. フォントを指定
  6. 入力ファイルを開く
  7. 文字列を回転
  8. "outline"オペレータを指定
  9. テキストをヘッダーレイヤーに書く
  10. すべてのページをコピー
PDoc doc = new PDoc() インスタンス生成
doc.New( ) 結果のPDFインスタンスを生成
引数に以下の値を設定します。
第一引数作成するPDF文書のファイル(パス)名
第二引数作成するPDF文書のページ幅(ポイント単位)
第三引数作成するPDF文書のページ高さ(ポイント単位)
content hd = doc.Header() Headerレイヤーのインスタンスを取得
Headerは、PDFのレイヤーでページの最上層に位置します。すべてのページで共通のレイヤーです。
doc.InputOpen( ) 入力のフォントテンプレートPDFを開く
引数にフォントテンプレートPDFのファイル(パス)名を設定します。
この例では、日本語の透かし文字を入れるためにフォントテンプレートを指定します。ビルトインフォントを使用する場合は、この指定は不要です。
IDoc iDoc = doc.Input() 入力PDFのインスタンス取得
iDoc.Open( ) 入力のPDFを参照用に開く
引数に以下の値を設定します。
第一引数入力PDFのファイル(パス)名
第二引数エラーコードを格納するインスタンス
doc.Attach( ) 指定のPDFを出力となるPDFに関連付ける
引数に入力PDFのインスタンスを設定します。
hd.SetTm( ) テキスト配置の変換行列を指定
例では、文字列を斜めに襷がけのように表示します。引数に以下の値を設定します。(PDF構文 変換行列参照)
第一引数注1参照
第二引数注1参照
第三引数注1参照
第四引数注1参照
第五引数テキストの書き出しX座標
第六引数テキストの書き出しY座標
注1)第二引数から第五引数の値でテキストの回転を指定します。
例のように、[cos( ) sin( ) -sin( ) cos( )]を指定すると、文字列が左下から右上に向かって襷がけのように表示されます。出力の例を参照してください。
hd.PrintText( ) テキストをヘッダーレイヤーに書く
引数に以下の値を設定します。
第一引数文字列
第二引数X-座標
第三引数Y-座標
hd.TextCmd( ) 文字のレンダリングモードをPDFのコマンドで指定します。
サンプルでは、縁取りの文字を指定しています。 このメソッドで追加されるコマンドはチェックされません。しかし、“BT”と“ET”に囲まれることを確認します(PDFのテキスト構文)。レンダリングモードは以下の値を指定できます。
モードサンプルサンプル
0塗りつぶし
1縁取り(パスを描く)
2縁取りと塗りつぶし
3縁取りも塗りつぶしも行わない(非表示)
4塗りつぶしとパスでクリップしたものを追加
5縁取りとパスでクリップしたものを追加
6塗りつぶし、縁取り、クリップしたものを追加
7パスでクリップしたものを追加
“BT”と“ET”に囲まれなければなりませんので、サンプルの場合は先行してhd.PrintText( )を実行します。

サンプルコード

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