Teigha PublishでJavaScriptを使用するための基本情報

.pdfドキュメントの作成におけるJavaScriptの使用により、インタラクティブな.pdfドキュメントを作成できます。

JavaScriptスクリプトは、以下の目的で使用できます。

  • 入力されたデータの検証
  • 計算の実行
  • ドキュメントの表示を動的に変更
  • ドキュメントオブジェクトの動的な作成と変更

関数の説明

Teigha Publish SDKには、JavaScriptを操作するための以下の関数が含まれています。

OdDocumentクラスの関数

void addJavaScript(const OdString& name, const OdString& source);

名前付きJavaScriptドキュメントレベルスクリプトを追加するために使用されます。

void getJavaScripts(OdStringArray& names, OdStringArray& sources) const;

すべての名前付きJavaScriptドキュメントレベルスクリプトを取得するために使用されます。

ドキュメントレベルスクリプトは、ドキュメントが開かれたときに一度実行されます。

OdPageクラスの関数

void addJavaScriptActionByField(const OdString& field_name, const OdString& source, const Action::Type action_type);

action_typeパラメータで記述されたユーザーアクションの場合に実行される、インタラクティブフォーム(フィールド)の一意の名前にJavaScriptスクリプトを追加するために使用されます。既存のJavaScriptスクリプトを持つカスタムアクションにスクリプトを追加すると、そのアクションに対して最後に追加されたスクリプトが使用されます。

void getJavaScriptActionsByField(const OdString& field_name, OdStringArray& sources, OdActionTypeArray& action_types) const;

指定された名前のインタラクティブフォームに割り当てられたすべてのJavaScriptスクリプトを取得するために使用されます。

インタラクティブフォーム(フィールド)は、以下のTeigha Publish SDKオブジェクトです: OdTextField, OdButton, OdListBox, OdCheckBox, OdDropDownList, OdRadioButton, および OdSignatureField。ユーザー定義のオブジェクトデータ名は、同じドキュメント内で一意である必要があります。各フィールドでは、以下のユーザーアクションに応答できます。

Action :: kCursorEnter Action :: kCursorExit Action :: kButtonPressed field Action :: kButtonReleased Action :: kInputFocus Action :: kLoseFocus Action :: kPageOpened Action :: kPageClosed フィールドを含むページが表示されたとき Action :: kPageVisible フィールドを含むページが表示されなくなったとき Action :: kPageInvisible

ユーザーアクション action_type

インタラクティブフォームの領域上にカーソルを移動する

Action :: kCursorEnter

インタラクティブフォームの領域外にカーソルを移動する

Action :: kCursorExit

アクティブなフィールド領域内で左マウスボタンをクリックする

Action :: kButtonPressed field

アクティブなフィールド領域内で左マウスボタンを離す

Action :: kButtonReleased

入力フォーカスフィールドを取得する

Action :: kInputFocus

入力フォーカスフィールドを失う

Action :: kLoseFocus

このフィールドを含むページを開く

Action :: kPageOpened

このフィールドを含むページを閉じる

Action :: kPageClosed

フィールドを含むページが表示されるとき

Action :: kPageVisible

フィールドを含むページが表示されなくなったとき

Action :: kPageInvisible

OdLinkクラスの関数

void setJavaScript(const OdString& source);
void getJavaScript(OdString& source) const;

OdLinkクラスのこのインスタンスのJavaScriptスクリプトを設定および取得するためにそれぞれ使用されます。このスクリプトは、アクティブなフィールド領域内で左マウスボタンが離されたときに実行されます。

OdArtwork 機能

void setJavaScript(const OdString& source);
void getJavaScript(OdString& source) const;

このOdArtworkクラスのインスタンスのJavaScriptスクリプトを設定および取得するためにそれぞれ使用されます。このオブジェクトが初期化されると、スクリプトが実行されます。

JavaScriptスクリプトの使用例

例として、OdButtonおよびOdTextFieldオブジェクトに対するJavaScriptスクリプトの使用を検討します。

OdFilePtr pPublisher = OdFile::createObject();
OdDocumentPtr pDoc = OdDocument::createObject();
pDoc->setInformation(L"Test Document", L"Author", L"Test", L"Oda Pdf Publish");
pDoc->setHostServices(pHostApp);

OdPagePtr pPage = OdPage::createObject();
pPage->setFormat(Page::kA3);
pPage->setOrientation(Page::kLandscape);
pDoc->addPage(pPage);
OdUInt32 top_line_top = 830;
OdUInt32 top_line_text_top = 650;

OdRect button_rect(20, 200, top_line_top - 80, top_line_top);
OdButtonPtr pButton = OdButton::createObject();
OdString button_name(L"TestButton");
pButton->setName(button_name);
pButton->setLabel(L"Test");
pPage->addButton(pButton, button_rect);

OdRect tx_button_rect(20, 200, top_line_text_top - 30, top_line_text_top);
OdTextFieldPtr tx2button = OdTextField::createObject();
OdString tx2button_name(L"ButtonText");
tx2button->setName(tx2button_name);
pPage->addTextField(tx2button, tx_button_rect);

OdChar* buttonActionBase = 
L"var text_field = getField('%s');\n"
L"if(text_field != null)          \n"
L"  text_field.value = '%s';      \n";
pPage->addJavaScriptActionByField(button_name, OdString().format(buttonActionBase, tx2button_name.c_str(), L"button is pressed"), Action::kButtonPressed);
pPage->addJavaScriptActionByField(button_name, OdString().format(buttonActionBase, tx2button_name.c_str(), L"button is released"), Action::kButtonReleased);
pPage->addJavaScriptActionByField(button_name, OdString().format(buttonActionBase, tx2button_name.c_str(), L"cursor enters"), Action::kCursorEnter);
pPage->addJavaScriptActionByField(button_name, OdString().format(buttonActionBase, tx2button_name.c_str(), L"cursor exits"), Action::kCursorExit);
pPublisher->exportPdf(pDoc, sOutPdf);

この例のコードでは、ページ上に1つのOdButtonオブジェクトと1つのOdTextFieldオブジェクトを作成します。次に、OdButtonオブジェクトを、イベントに関する情報をOdTextFieldオブジェクトに出力するいくつかのシナリオに追加します。このコードの結果は、ボタンとテキストフィールドの2つのコントロールを含む.pdfドキュメントになります。カーソルをボタンのアクティブ領域に移動するか、ボタンのアクティブ領域で左マウスボタンを押す/離すと、テキストメッセージがテキストフィールドに表示されます。下の図は、オブジェクトの初期状態と、ユーザーアクションの実行結果としての状態を示しています。

image1

 

今すぐ始める

ODAソフトウェアを60日間無料でお試しください。
リスクなし、クレジットカード不要。

無料で試す