CodeZine(コードジン)

特集ページ一覧

Webページ用PDFビューワで活用の幅が広がるPDFライブラリ「DioDocs for PDF」

.NETの実装でドキュメントを作成できるライブラリ「DioDocs」の活用

  • LINEで送る
  • このエントリーをはてなブックマークに追加
目次

PDFビューワで利用できるカスタムフォーム入力タイプ

 PDFビューワでは、標準のPDFフォームでは利用できない、データ種類に応じた入力を実現するカスタムフォーム入力タイプが利用できます。図12は、日付、時間、メールアドレス、色のカスタムフォーム入力タイプを設定した例です。

図12 カスタムフォーム入力タイプを設定したサンプル(P003CustomInputType)
図12 カスタムフォーム入力タイプを設定したサンプル(P003CustomInputType)

 カスタムフォーム入力タイプを利用する方法を以下で説明します。今回のサンプル(P003CustomInputType)では、Visual Studioの「コンソール アプリケーション」をもとに、DioDocs for PDFでPDFを生成する処理を実装します。最初に、プロジェクトの「NuGet パッケージの管理」から、DioDocs for PDFのパッケージ「GrapeCity.DioDocs.Pdf.ja」を追加します。

図13 DioDocs for PDFのパッケージを追加(P003CustomInputType)
図13 DioDocs for PDFのパッケージを追加(P003CustomInputType)

 次に、Program.csに含まれるMainメソッドに、リスト7の通り実装します。なおリスト7では、DioDocsのライセンスキーを設定する処理は省略しています。

[リスト7]カスタムフォーム入力タイプを含むPDFを生成する実装(P003CustomInputType/P003CustomInputType/Program.cs)
using (var stream = new FileStream("sample003.pdf", FileMode.OpenOrCreate))
{
    // PDFドキュメントを生成 ...(1)
    var document = new GcPdfDocument();
    var page = document.NewPage();
    // テキストフィールド ...(2)
    TextField textField;
    // テキストフィールドの位置、幅、高さ ...(3)
    var fieldPosition = new PointF(72, 72);
    var fieldWidth = 150f;
    var fieldHeight = 25f;
    // テキストフィールドの間隔 ...(4)
    var fieldYDiff = 60f;

    // 日付 ...(5)
    textField = new TextField();
    textField.GcProps["type"] = "date";
    textField.GcProps["defaultvalue"] = "2021-05-05";
    // テキストフィールドの位置とサイズを設定 ...(6)
    textField.Widget.Rect = new RectangleF(
        fieldPosition.X, fieldPosition.Y, fieldWidth, fieldHeight);
    // テキストフィールドを追加 ...(7)
    textField.Widget.Page = page;
    document.AcroForm.Fields.Add(textField);
    // 次のテキストフィールドの位置を設定 ...(8)
    fieldPosition.Y += fieldYDiff;

    // 時間 ...(9)
    textField = new TextField();
    textField.GcProps["type"] = "time";
    textField.GcProps["defaultvalue"] = "15:00";
(略)
    // メールアドレス ...(10)
    textField = new TextField();
    textField.GcProps["type"] = "email";
    textField.GcProps["validateoninput"] = true;
(略)
    // 色 ...(11)
    textField = new TextField();
    textField.GcProps["type"] = "color";
(略)
    // ドキュメントを保存 ...(12)
    document.Save(stream);
}

 (1)のGcPdfDocumentコンストラクタでドキュメントを生成し、NewPageメソッドでページを生成します。(2)はページに追加するテキストフィールドの変数です。(3)と(4)でテキストフィールドの位置やサイズ、間隔を定義しています。

 (5)は日付のテキストフィールドを追加する実装です。TextFieldコンストラクタでテキストフィールドを生成後、テキストフィールドのGcProps配列プロパティで、「type」に日付を表す「date」、「defaultvalue」に日付の初期値を設定します。(6)でテキストフィールドに位置とサイズを設定後、(7)でドキュメントに追加します。(8)は、次のテキストフィールドを表示する位置を設定する(下方向にずらす)処理です。

 (9)は時間のテキストフィールドを追加する実装で、GcProps配列プロパティの「type」に時間を表す「time」、「defaultvalue」に時間の初期値を設定します。そのほかの処理は日付と同一です。

 (10)はメールアドレスのテキストフィールドを追加する実装で、GcProps配列プロパティの「type」にメールアドレスを表す「email」を設定します。「validateoninput」をtrueにすると入力チェックが有効になります。

 (11)は色のテキストフィールドを追加する実装で、GcProps配列プロパティの「type」に色を表す「color」を設定します。

 最後に(12)でPDFドキュメントをファイルに保存します。このプログラムを実行すると、プロジェクトのP003CustomInputType/bin/debug/netcoreapp3.1フォルダにsample003.pdfファイルが生成され、これをPDFビューワで開くと図12の通り表示されます。

 なお、利用できるすべてのカスタムフォーム入力タイプについては、公式サイトのデモも参考にしてください。

まとめ

 本記事では、.NETでドキュメントファイルを作成・編集できるライブラリ「DioDocs」の最新版V4Jに追加されたPDFビューワの利用法を説明しました。PDFビューワはクライアント単独で利用できるだけでなく、サーバー側のDioDocs for PDFと連携して注釈やフォームを編集することもできます。また、標準PDFにはないカスタムフォーム入力タイプにより、利用者がより扱いやすいPDFフォームを提供できます。

参考資料

関連リンク



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:クラウド時代にマッチする、ドキュメント生成・更新APIライブラリ「DioDocs(ディオドック)」

もっと読む

著者プロフィール

  • WINGSプロジェクト  吉川 英一(ヨシカワ エイイチ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

あなたにオススメ

All contents copyright © 2005-2022 Shoeisha Co., Ltd. All rights reserved. ver.1.5