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

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を作成するサンプルです。
左図のように既存PDFにグラフィック コンテンツを追加します。
拡大
using System;
using PREPTOOLLib;

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

            //出力ファイルおよびコンテンツヘッダーの取得
            if (!doc.New("output.pdf", 0, 0))
            {
                Console.WriteLine("'output.pdf'を作成できません");
                Environment.Exit(1);
            }
            content con = doc.Header();

            //入力ファイル
            if (!doc.InputOpen("input.pdf"))
            {
                Console.WriteLine("'input.pdf'を開けません");
                Environment.Exit(2);
            }

            //出力ファイルにセキュリティを設定
            doc.SetSecurity("pswd", null, "pcsa");

            //ベジェ曲線を描画し、透明な円に埋める
            con.SetFillAlpha(0.15f);
            con.SetStrokeAlpha(0.15f);
            con.DrawArea(true);
            con.MoveTo(100, 117);
            con.CurveTo(100, 183, 200, 183, 200, 117, 0);
            con.CurveTo(200, 51, 100, 51, 100, 117, 0);
            con.DrawArea(false);

            //ヘッダに四角を描く
            con.SetFillAlpha(1);
            for (int iRow = 0; iRow < 6; iRow++)
            {
                for (int iColumn = 0; iColumn < 6; iColumn++)
                {
                    // Yellow(1,1,0)    Green(0,1,0)
                    // Red(1,0,0)       Blue(0,0,1)
                    con.SetFillColor(1 - iColumn * .2f, iRow * .2f, (iColumn - iRow) * .2f);
                    con.DrawRect(100 + iColumn * 11, 100 + iRow * 11, 9, 9, 0);
                }
            }

            //矢印を描く
            con.SetFillColor(1, 0, 0);
            con.SetStrokeAlpha(1);

            con.MoveTo(110, 90);
            con.DrawTo(150, 90);
            con.MoveTo(145, 93);
            con.DrawTo(150, 90);
            con.DrawTo(145, 87);

            con.MoveTo(175, 155);
            con.DrawTo(175, 115);
            con.MoveTo(178, 120);
            con.DrawTo(175, 115);
            con.DrawTo(172, 120);

            con.MoveTo(180, 85);
            con.DrawTo(170, 95);
            con.MoveTo(171, 89);
            con.DrawTo(170, 95);
            con.DrawTo(176, 94);

            //テキストを書く
            con.SetFont("Helvetica", 8);

            con.SetFillColor(1, 0, 0);
            con.SetTm(1, 0, 0, 1, 115, 80);
            con.PrintText("+ Red -", 115, 80);

            con.SetFillColor(0, 1, 0);

            // x度回転する
            // TM = cos(x), sin(x), -sib(x), cos(x), 0, 0
            //
            con.SetTm(0, 1, -1, 0, 185, 117);
            con.PrintText("- Green +", 185, 117);

            con.SetFillColor(0, 0, 1);
            con.SetTm(.707f, -.707f, .707f, .707f, 168, 105);
            con.PrintText("- Blue +", 168, 105);

            //すべてをコピーして文書を閉じる
            doc.InputCopyAll();
            doc.Close();
        }
    }
}
このサンプルでは、以下の手順でPDFを作成します。
  1. PDFのインスタンスを生成
  2. 出力ファイル作成
  3. Headerレイヤー(最上位レイヤー)を取得
    このレイヤーは、パージがコピーもしくは作成されたときマージされ、すべてのページで共通です。
  4. 入力のPDFを開く
  5. PDFにセキュリティを設定
    Acrobatでの印刷を禁止や暗号化の方法などを設定します。
  6. Headerレイヤーに曲線、四角形、文字列や線を追加
  7. 文字列を回転
    行列を指定して回転の方向などを指定します。
  8. すべてのページをHeaderレイヤーとマージしてコピー
  9. 文書を閉じる
PDoc doc = new PDoc() インスタンス生成
doc.New( ) 出力のPDFインスタンスを生成
引数に以下の値を設定します。
第一引数作成するPDF文書のファイル(パス)名
第二引数作成するPDF文書のページ幅(ポイント単位)
第三引数作成するPDF文書のページ高さ(ポイント単位)
content con = doc.Header() Headerレイヤーのインスタンスを取得
Headerは、PDFのレイヤーでページの最上層に位置します。すべてのページで共通のレイヤーです。 透かし(ウォーターマーク)を追加する場合は、このレイヤーを利用します。
doc.InputOpen( ) 入力PDFを開く
引数に入力PDF文書ファイル(パス)名を設定します。
doc.Security( ) PDF文書にセキュリティを設定
引数に以下の値を設定します。
第一引数オーナーパスワード
第二引数ユーザーパスワード
第三引数セキュリティ・フラグ
以下の値を設定できます。
設定値セキュリティ
pAcrobatから印刷禁止
cAcrobatでの文書変更禁止
s文字列やグラフィックスの選択とコピーの禁止
a注釈とフォームへの変更禁止
iフォームフィールドの編集機能無効
eテキストとグラフィックスの取出機能無効
d文書組立機能無効
q高解像度印刷機能無効
5
128ビット暗号化指定
i,e,d,q は128ビット暗号を指定した場合のみ
con.SetFillAlpha( ) 不透明度を設定
塗りつぶしの不透明度を設定します。
con.SetStrokeAlpha( ) 不透明度を設定
線の不透明度を設定します。
con.DrawArea( ) パスを閉じる
con.MoveTo( ) 線描画の開始位置に移動
con.CurveTo( ) ベジェ曲線を描く
con.SetFillColor( ) 塗りつぶしの色を指定
con.DrawRect( ) 四角形を描く
con.SetFont( ) フォントを指定
ここでは、Headerレイヤーにテキスト文字を追加(PrintText)するためにフォントを指定します。con.PrintTextをコールする前にフォントを指定しなければなりません。
引数に以下の値を設定します。
第一引数フォントの名前
第二引数フォントのサイズ
Acrobatにビルトインされたフォント(Helvetica、Helvetica-Bold、Helvetica-Oblique、Times-Roman、Times-Italic、Times-Bold、Courier、Courier-Oblique、Courier-Bold、Symbol、ZapfDingbats)は、この例のように利用できます。 これ以外のフォントや日本語フォントを利用する場合は、日本語フォントのテンプレートを参照してください。
con.SetTm( ) テキスト配置の変換行列を指定
サンプルでは、ななめ45度(0.707f=sin(45))に傾けて文字を書き込みます。
引数に以下の値を設定します。
第一引数注1参照
第二引数注1参照
第三引数注1参照
第四引数注1参照
第五引数テキストの書き出しX座標
第六引数テキストの書き出しY座標
注1)第二引数から第五引数の値でテキストの回転を指定します。[1 0 0 1]を指定すると、テキストを左から右へ横方向に書き出します。文字列を襷がけのように書き出す方法を参照してください。
con.PrintText( ) 書き出す文字列を指定
引数に以下の値を設定します。
第一引数書き出す文字列
第二引数テキストの書き出しX座標
第三引数テキストの書き出しY座標
doc.InputCopyAll() 入力PDFのすべてのページを出力PDFにコピー
doc.Close() PDFを閉じる

サンプルコード

 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
株)トラスト・ソフトウェア・システム
暗号化・電子署名・タイムスタンプ ライブラリ作成します。
お問い合わせください。