SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

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

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

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フォームを提供できます。

参考資料

関連リンク

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
クラウド時代にマッチする、ドキュメント生成・更新APIライブラリ「DioDocs(ディオドック)」連載記事一覧

もっと読む

この記事の著者

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLDB/PEAR/Smarty)」「独習シリーズ(ASP.NET/PHP)」「10日でおぼえる入門教室シリーズ(ASP.NET/PHP/Jakarta/JSP&サーブレット/XML)」「Pocket詳解辞典シリーズ(ASP.NET/PHP/Perl&CGI)」「今日からつかえるシリーズ(PHP/JSP&サーブレット/XML/ASP)」「書き込み式 SQLのドリル」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/14159 2021/06/01 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング