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

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を追加しています。
using System;
using PREPTOOLLib;

namespace toc
{
    class Toc
    {
        static void Main(string[] args)
        {
            string[] Author = new string[50];
            string[] DocTitle = new string[50];
            int[] NumPage = new int[50];
            int pages = 1;

            //引数チェック
            if (args.Length < 3)
            {
                Console.WriteLine("複数の PDF ファイルを統合し、目次を作成します。");
                Console.WriteLine("toc PDF-InputFile1 PDF-InputFile2 ... PDF-OutputFile");
                Environment.Exit(1);
            }
            else if (args.Length > 52)
            {
                Console.WriteLine("引数が多すぎます。50ファイルまで指定できます。");
                Environment.Exit(2);
            }

            //インスタンス生成
            PDoc doc = new PDoc();

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

            //入力ファイルからタイトルと作成者情報を取り出し記憶する
            for (int i = 0; i < (args.Length - 1); i++)
            {
                //入力PDFファイルを開きインスタンスにAttachする
                IDoc idoc = new IDoc();
                if (!idoc.Open(args[i], null))
                {
                    Console.WriteLine("ファイルを開けません");
                    Environment.Exit(4);
                }
                doc.Attach(idoc);

                //属性情報
                Author[i] = idoc.GetInfoAttr("Author");
                DocTitle[i] = idoc.GetInfoAttr("Title");

                //総ページ数(次の文書の開始ページにする)
                pages += idoc.NumPages();
                NumPage[i + 1] = pages;

                //ページをコピー
                doc.InputCopyAll();
            }

            //最初のページ
            NumPage[0] = 1;

            //目次のために新たなページを作成
            doc.NewPage();

            //フォントテンプレートを開き、対象のページにアタッチ
            //このテンプレート(PDF)に目的の文字が無い場合は、ASCII 32(space)に置き換わる
            if (!doc.InputOpen("msfonts.pdf"))
            {
                Console.WriteLine("フォントテンプレートを開けません");
                Environment.Exit(5);
            }

            //ページレイヤーのハンドルを取得し、ページサイズをA4(595x842)に設定
            content con = doc.Page();
            doc.PageSize(595, 842);
            con.SetTm(1, 0, 0, 1, 100, 710);
            con.SetFont("Helvetica", 18);
            con.PrintText("Table of Contents", 100, 710);

            //すべてのファイルに対して、
            for (int i = 0; i < (args.Length - 1); i++)
            {
                //作成者と文書タイトルを追加
                if (!con.SetFont("MS-Gothic", 14))
                {
                    Console.WriteLine("フォントを設定できません");
                    Environment.Exit(6);
                }
                con.SetTm(1, 0, 0, 1, 100, 685 - 15 * (float)i);
                con.PrintText(Author[i], 100, 685 - 15 * (float)i);
                con.SetTm(1, 0, 0, 1, 250, 685 - 15 * (float)i);
                con.PrintText(DocTitle[i], 200, 685 - 15 * (float)i);

                //リンクを追加
                doc.AddGoToLink(NumPage[args.Length - 1], 100, 685 - 15 * (float)i, 400, 700 - 15 * (float)i, NumPage[i], 0, 0, 0, 0);
            }

            //出力ファイルを閉じる
            doc.Close();
        }
    }
}
このサンプルは、以下の手順で新しいPDFを生成します。
  1. インスタンス生成
  2. 出力のPDFを作成
  3. すべての入力PDFから情報を取り出す
  4. 目次のために新しいページを生成
  5. 日本語フォントのためにフォントテンプレートを開く
    フォントテンプレートには、そのフォントに含まれるすべての文字がテキストとして記載されています。
    出力のPDFには、フォントテンプレートから使用している文字のフォントだけが埋め込まれます。
  6. 生成したページの大きさを指定
  7. 生成したページに各入力PDFの目次とそのページへのリンクを作成
  8. PDFを閉じる
PDoc doc = new PDoc() インスタンス生成
doc.New( ) 結果のPDFインスタンスを生成
引数に以下の値を設定します。
第一引数作成するPDF文書のファイル(パス)名
第二引数作成するPDF文書のページ幅(ポイント単位)
第三引数作成するPDF文書のページ高さ(ポイント単位)
IDoc idoc = new IDoc() PDFを参照するためのインスタンスを生成
idoc.Open( ) 入力のPDFを参照用に開く
引数に以下の値を設定します。
第一引数入力PDFのファイル(パス)名
第二引数エラーコードを格納するインスタンス
doc.Attach( ) 指定のPDFを出力となるPDFに関連付ける
引数に入力PDFのインスタンスを設定します。
idoc.GetInfoAttr( ) PDFの/Info属性を取得
引数にを属性のキーを指定します。
idoc.NumPages() ページ数を取得
doc.InputCopyAll() 入力PDFのすべてのページを出力PDFにコピー
doc.NewPage() ページを新たに生成
生成されたページは、先頭もしくは、カレントページの次に挿入されます。

サンプルコード

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