PDFlib

高度なPDFアプリケーションの開発を支援する定番プログラムライブラリー Supported by インフォテック株式会社

PDFlib サンプル集(クックブック)

本サンプルプログラムは、PDF 文書生成ライブラリーの実装である PDFlib の基本的な機能を実際のプログラムで紹介したものです。

本サイトでダウンロードした PDFlib は、一部機能の制限を除き、評価版として無償でお使いいただけます。

ライセンスキー

PDFlibにライセンスキーを適用し、デモスタンプを取り除くための複数の方法をご紹介するサンプルプログラムです。

初めに、実行時およびレジストリ(Windows のみ)を使用することでライセンスキーを指定します。

次に、ライセンスファイル内のライセンスキーを指定する方法を示します。ライセンスファイルは、set_option 関数、環境変数、レジストリ(Windows のみ)により指定します。

必要な製品:PDFlib または PDFlib+PDI または PDFlib PPS


/*
 * ライセンスキー:
 *  PDFlib のライセンスキーを様々な方法で適用し、デモスタンプを取り除きます。
 *
 * 1番目は、ライセンスキーを実行時に適用する、または(Windows の場合のみ)
 * レジストリキーで適用する方法です。
 * 
 * 2番目は、ライセンスファイルにライセンスキーを指定し、set_option()、
 * システム環境変数(Windows のみ)、またはレジストリキーにより
 * ライセンスファイルを指定する方法です。
 * 
 * 既存のライセンスキーを確認するには set_option() で "avoiddemostamp"
 * オプションを指定します。 
 * 
 * PDFlib、PDFlib+PDI、PPS(PDFlib Personalization Server)は、1つの
 * パッケージで提供されますが、別々の製品ですので必要なライセンスキーが
 * 異なります。注意してください。
 * PDFlib+PDI のライセンスキーは PDFlib に対しても有効ですが、 その逆は
 * 無効です。PPS のライセンスキーは PDFlib+PDI と PDFlib に対して有効です。
 * すべてのライセンスキーはプラットフォームに依存し、購入したプラット
 * フォームでのみ使用することができます。
 *
 * 必要な製品: PDFlib/PDFlib+PDI/PPS 10
 * 必要なデータ: PDFlib または PDFlib+PDI または PPS で有効なライセンスキー
 */
package com.pdflib.cookbook.pdflib.general;

import com.pdflib.pdflib;
import com.pdflib.PDFlibException;

public class license_key {
    public static void main(String argv[]) {
        /* 必要に応じてファイルの場所を指定する */
        String searchpath = "../input";

        String outfile = "license_key.pdf";
        String title = "License Key";

        pdflib p = null;
        int tf;
        int exitcode = 0;

        final String text = 
            "You can apply your PDFlib license key using various methods to get "
            + "rid of the demo stamp. The first method is to apply your license "
            + "key at runtime or (for Windows only) via a registry key. The second "
            + "alternative method is to supply your license key "
            + "in a license file and to inform PDFlib about the license file using "
            + "set_option(\"licensefile=<path to license file>\"), "
            + "a system environment variable or (for Windows only) a registry "
            + "key. "
            + "See the source code for a detailed description. "
            + "See also chapter 0 in the PDFlib Tutorial for detailed "
            + "documentation about the licensing mechanism.";

        try {
            p = new pdflib();
            p.set_option("searchpath={" + searchpath + "}");

            /*
             * --- 1番目の方法: --- 
             * --- 実行時にライセンスキーを適用する ---
             */

            /*
             * ライセンスキーを「license」オプションで指定します。
             * これは、 PDFlib オブジェクトを "new pdflib()" でインスタンス化
             * した直後に実行する必要があります。
             * 以下の関数で、"0" をライセンスキーに置き換えます。
             */
            p.set_option("license=0");

            /*
             * Windowsの場合、ライセンスキーは以下のレジストリキーに設定することも
             * できます。
             * バージョン9.0.0 の場合
             *
             * HKEY_LOCAL_MACHINE\SOFTWARE\PDFlib\PDFlib\9.0.0
             * 
             */

            /*
             * (Windows COM .NET インストーラを使用している場合は、PDFlib 製品の
             * インストール時にライセンスキーを設定することができます。)
             */

            /*
             * 有効な PDFlib ライセンスキーをインストールすると、PDI 機能は試用
             * できなくなります。
             * 製品のライセンスキーをすでにインストールしているときは、下記の通り
             * ライセンスキーを"0"(ゼロ)に置き換えることで、上位の製品クラスの
             * 機能を評価用として使用することができます。
             * 
             * p.set_option("license=0");
             * 
             * これにより、以前は無効だった機能が有効になり全てのページでデモ
             * スタンプが再有効化されます。これは、PDFlib+PDI と PPS にも適用
             * されます。
             */

            /*
             * --- 2番目の方法: --- 
             * --- ライセンスキーをライセンスファイルで設定 ---
             */

            /*
             * ライセンスキーをテキストファイルに以下の形式に従って入力します。
             *(PDFlib のパッケージに含まれているライセンスファイルのテンプレート
             * "licensekeys.txt" を使用してください)。
             */

               PDFlib license file 1.0
               # Licensing information for PDFlib GmbH products
               PDFlib <version> <license key>

            /* 
             * "PDFlib" はそれぞれ、PDFlib、PDFlib+PDI、PPS を示します。
             * <version> は PDFlib のバージョン番号(9.0.0 等)、
             * <licensekey> はライセンスキーです。
             * ライセンスファイルには、複数の PDFlib のライセンスキーが
             * 含まれている場合があります。複数のライセンスキーを別々の行に
             * 書くこともできます。
             */

            /*
             * ライセンスキーをライセンスファイル(licensekeys.txt)に追加した後、
             * そのファイルを PDFlib が検索するデフォルトの場所のいずれかに置くか
             * (PDFlib チュートリアルの「ファイル検索パス」を参照)、
             * または以下のいずれかの方法でライセンスファイルを PDFlib に通知して
             * ください。
             * 
             * p.set_option("licensefile=path/to/licensekeys.txt");
             * 
             * または、 環境変数 PDFLIBLICENSEFILE にライセンスファイルを指し示す
             * よう設定します。
             *
             *  Windowsの場合、システムのコントロールパネルを開き、
             * 「システム」→「詳細設定」→「環境変数」→「システム変数」を選択します。
             * 
             * Unixの場合は、以下のようなコマンドを実行してください。 
             * export PDFLIBLICENSEFILE=/path/to/licensekeys.txt
             */

            /*
             * Windows では、ライセンスファイルの名前を次のレジストリキーに入力
             * することもできます。
             * 
             * HKLM\Software\PDFlib\PDFLIBLICENSEFILE
             */

            /* load_font()の戻り値を確認する */
            p.set_option("errorpolicy=return");

            /*
             * 最初のドキュメントを開始する。デフォルトでは、有効なライセンスキーが
             * 見つからない場合、すべてのページにデモスタンプが押されます。
             */
            if (p.begin_document(outfile, "") == -1)
                throw new Exception("Error: " + p.get_errmsg());

            p.set_info("Creator", "PDFlib Cookbook");
            p.set_info("Title", title);

            /* ページを始める */
            p.begin_page_ext(0, 0, "width=a4.width height=a4.height");

            final String optlist = "fontname=NotoSerif-Bold fontsize=16 " 
                +  "fillcolor={gray 0} leading=140%";

            tf = p.add_textflow(-1, text, optlist);
            if (tf == -1)
                throw new Exception("Error: " + p.get_errmsg());

            p.fit_textflow(tf, 50, 200, 400, 600, "");

            p.end_page_ext("");

            p.end_document("");
        }
        catch (PDFlibException e) {
            System.err.println("PDFlib exception occurred:");
            System.err.println("[" + e.get_errnum() + "] " + e.get_apiname()
                + ": " + e.get_errmsg());
            exitcode = 1;
        }
        catch (Exception e) {
            System.err.println(e);
            exitcode = 1;
        }

        try {
            /*
             * デフォルトでは、有効なライセンスキーが見つからなかった場合、
             * 全てのページでデモスタンプが作成されます。
             * 
             * しかし、そのような場合に強制的に例外を発生させることもできます。
             * これは、ライセンスキーの紛失や無効による問題が発生し、不要な
             * デモスタンプが作成された場合、直ちに通知されることを勧めるものです。
             * 
             * 下記のように、新しいドキュメントを始める前に、「avoiddemostamp」
             * オプションを「true」に設定してください。
             * 有効なライセンスキーが見つからない場合、例外が発生します。
             */
            p.set_option("avoiddemostamp=true");

            /*
             * 新しいドキュメントを開始し、メモリ内で生成することで、ディスク上に
             * 無効なPDFドキュメントが作成されるのを防ぐ。
             */
            p.begin_document("", "");
            p.begin_page_ext(0, 0, "width=a4.width height=a4.height");
            p.end_page_ext("");
            p.end_document("");
        }
        catch (PDFlibException e) {
            System.err.println("PDFlib exception occurred:");
            System.err.println("[" + e.get_errnum() + "] " + e.get_apiname() +
                ": " + e.get_errmsg());
            if (e.get_errnum() == 1994) {
                System.err
                    .println("This behaviour is expected since we did not\n"
                        + "supply a valid license key and set the\n"
                        + "\"avoiddemostamp\" option to \"true\".");
            exitcode = 0;
            } else {
                exitcode = 1;
            }
        }
        catch (Exception e) {
            System.err.println(e);
            exitcode = 1;
        }
        finally {
            if (p != null) {
                p.delete();
            }
            System.exit(exitcode);
        }
    }
}

関連ページ

(Apr 3, 2007 - Feb 21, 2024)