Webアプリケーションの作成
Webアプリケーションを開発するには、次のタスクを完了する必要があります。
- ビジュアル・ビルダー・アプリケーションを作成します。
- 新規Webアプリケーションを作成します。
- 外部ライブラリを含めます。
- ユーザー・インタフェースを作成します。
- アップロードしたPDF文書を更新します。
- 新しいPDFドキュメントを作成します。
- PDFファイルをダウンロードします。
ビジュアル・ビルダー・アプリケーションの作成
Visual Builderアプリケーションは、Webおよびモバイル・アプリケーションの開発に使用するリソースの集合です。Visual Builderアプリケーションには、データ・ソースおよびビジネス・オブジェクトを記述するメタデータがJSONファイルに含まれています。Webおよびモバイル・アプリケーション用のHTMLおよびJavaScriptファイルも含まれます。
- : ビジュアル・アプリケーションのホーム・ページで、「新規」をクリックします。
- 「アプリケーションの作成」ダイアログ・ボックスで、アプリケーション名を入力します。「アプリケーションID」フィールドは、指定したアプリケーション名に基づいて自動的に移入されます。
- 必要に応じてアプリケーションIDを変更できますが、IDはアイデンティティ・ドメイン内で一意である必要があります。
- 「空のアプリケーション」のデフォルトの選択は変更しないままにします。このテンプレートでは、アーティファクト、アプリケーションまたはその他のリソースは作成されません。
- 「終了」をクリックします。
新しいVisual Builderアプリケーションは、作成後に自動的に開き、「ようこそ」画面を表示します。新しいアプリケーションにはアーティファクトは含まれませんが、ウィザードでは、デフォルトでアプリケーションのファイル構造および必要なリソースとファイルが作成されます。
新規Webアプリケーションの作成
Visual BuilderアプリケーションのWebアプリケーションは相互に独立していますが、すべてアプリケーションで定義されたデータ・ソースを使用できます。
外部ライブラリを含める
PDFドキュメントを生成、変更およびダウンロードするには、「始める前に」に示すように、2つの外部ライブラリPDF-lib
およびdownloadj
を含める必要があります。
PDF-lib
は、PDFドキュメントを管理します。downloadj
は、生成されたPDFドキュメントをダウンロードします。
index.html
ファイルに両方のlibrarieのソースを挿入します。
<script src="https://unpkg.com/pdf-lib@1.4.0"></script>
<script src="https://unpkg.com/downloadjs@1.4.7"></script>
ユーザー・インタフェースの作成
ここで、ユーザー・インタフェースを作成します。このインタフェースには、コンテナ、ヘッダー、ボタン、テキスト・フィールド、JavaScriptコード、HTMLコードなどのコンポーネントが含まれている必要があり、ユーザーが次のことを実行できます。
- ファイルをアップロードします。
- PDFドキュメントに表示されるフィールド・テキストを入力します。
- ボタンをクリックして、入力したテキストでアップロードしたPDF文書を更新します。
- ボタンをクリックして、入力したテキストを含む新しいPDFドキュメントを作成します。
- ボタンをクリックして、準備したドキュメントをダウンロードします。
アップロードしたPDFファイルをメイン・ページ画面に表示
メイン・ページのソースHTMLで、以前に割り当てられたページ変数fileURL
をソースとともに追加します。fileURL
オブジェクトをメインHTMLページに追加します。この段階で、アプリケーションはPDFファイルをアップロードおよび表示できます。
addPDFDocument関数の出力のページ変数fileURLおよびholdFileへの割当て
返されたaddPDFDocument
ファンクション・プロパティのURLとデータを、それぞれページ変数fileURL
およびholdFile
に割り当てます。
addPDFDocumentファンクションの作成
addPDFDocument
を作成します。アプリケーションは1つの入力パラメータを受け取ります。この関数は、入力ファイル・パラメータに基づいてURL変数をインスタンス化し、アップロードされたドキュメントを読み取ってbase64文字列に変換します。次のコード・サンプルを使用して、関数を定義できます。
PageModule.prototype.addPDFDocument = function(arg1) {
return new Promise(
resolve=>{
const blobURL = URL.createObjectURL(arg1);
const reader = new FileReader();
reader.addEventListener("load", function () {
// convert image file to base64 string
resolve({ data: reader.result, url: blobURL });
}, false);
if (arg1) {
reader.readAsDataURL(arg1);
}
}
);
};
アップロード済PDF文書の更新
コンポーネント・パレットから、ページ・デザイナにテキスト・フィールド・コンポーネントをドラッグ・アンド・ドロップし、この下に新しいボタンをドラッグ・アンド・ドロップします。
- テキスト・フィールドの内容を格納するページ変数
textIncludedIntoPDF
を作成します。この変数によって、コンテンツが挿入され、PDFドキュメントが更新されます。 - この変数を入力テキスト コンポーネントに割り当てます。
PDFの更新および表示
update_display_pdf
というラベルの付いた新しいアクション・チェーンが作成されます。
UpdatePDFファンクションの作成
次に、JavaScript関数createUpdatePDF
を作成します。これは、2つの入力パラメータ(アップロードされたPDF文書と、ユーザーが以前にメイン・ページで入力したテキスト)を持つ非同期関数です。バイト配列を返します。
更新されたPDFドキュメントの表示
UpdatePDF
関数の結果は、一時ページ変数tmpPDFBytes
に割り当てられます。この割当ての後、JavaScript関数はbase64バイト配列を受け取り、このバイト配列から新しいblobエンティティをインスタンス化します。最後に、この関数は、このPDFドキュメントに対応するURLを作成して返します。
PageModule.prototype.displayPDFDocument = function (arg1) {
const bytes = new Uint8Array( arg1 );
// create a new blobfrom the byte array with type of application: pdf
const blob = new Blob( [ bytes ], { type: "application/pdf" } );
// create the url of the generated blob entity
const newdocURL = URL.createObjectURL(blob);
// return the updated pdf's url
return newdocURL;
};
この関数の出力は、ページ変数fileURL
に割り当てられ、更新されたPDFドキュメントをページに表示するために使用されます。
この時点で、アプリケーションでPDFドキュメントをアップロードし、ユーザーが画面のテキスト・フィールドに入力したテキストで変更してから、更新されたPDFドキュメントを画面に表示します。
新規PDFドキュメントの作成
ドキュメントの作成と表示
「新規PDFの作成」ボタンで起動されるアクションを定義する新規イベントを作成します。イベントによって、ラベルがcreate_display_pdf
の新しいアクション・チェーンが作成されます。
新しいアクション・チェーンでは、JavaScript関数を使用して新しいPDF(テキスト・フィールドに以前に入力したテキストを含む)が作成され、一時ページ変数を介して、2番目のJavaScript関数によって新しいPDFドキュメントが再生成されて表示されます。
PDFファイルのダウンロード
コンポーネント・パレットから、ボタン・コンポーネントをドラッグ・アンド・ドロップしてページ・デザイナに含めます。
ドキュメントのダウンロード
「PDFのダウンロード」ボタンの新しいイベント・アクションを作成します。イベントによって、downloadPDF
というラベルの付いた新しいアクション・チェーンが作成されます。新しいアクション・チェーンでは、JavaScript関数を使用してPDFファイルをダウンロードします(テキスト・フィールドにユーザーがテキストを入力したテキストが含まれます)。
PDFファイルのダウンロード
downloadPDFfile
は、1つの入力パラメータとしてアップロードおよび変更または最初から作成されたPDFドキュメントのバイト配列を取得し、事前定義済の名前(PDF-lib_modification_example.PDF
およびタイプapplication/PDF
)でドキュメントをダウンロードします。
downloadj
から)download()
ファンクションを使用します。download()
の入力引数には、次のデータ型を指定できます。
- URL
- 文字列
- BLOB
- 型付き配列
dataURL
を介して、ブラウザのダウンロード・ディレクトリに配置される新しいファイルの名前とタイプ。
PageModule.prototype.downloadPDFFile = function (arg1) {
download(arg1, "pdf-lib_modification_example.pdf", "application/pdf");
};