データのエンコード時に政府仕様やその他の仕様に従わなければならない場合には、事前定義されているデータエンコードオプションでは要件を満たせないことがあります。「カスタム」オプションを選択すると、データのエンコード時に独自のスクリプトを使用することができます。このスクリプトは次の例のように非常に単純なものでもかまいません。
this.rawValue=NumericField1.rawValue
逆に、どのフィールドをエンコードするかを特定の条件に基づいて決定するような複雑なスクリプトを作成することもできます。
フォームデザイン上で、Paper Forms Barcode オブジェクトを選択します。
オブジェクトパレットで「値」タブをクリックし、「自動スクリプティング」を選択解除します。
スクリプトエディターで、サンプルカスタムスクリプトを修正することも、独自のスクリプトを作成することもできます。
例えば、次のサンプルコードは、フォームのフィールド値を取得した上で、フォームのフィールド値を含むカンマ区切り値(CSV)インスタンスを表す文字列を形式設定し、インタラクティブ PDF フォーム用に Paper Forms Barcode を更新する、JavaScript スクリプトを示しています。このフォームには、accountNum、formerFirstName、formerMiddleInitial、formerLastName、newFirstName、newMiddleInitial および newLastName という名前のフィールドが含まれています。
// This function ensures that the barcode will update
// when a change is made to any field on the form.
function depends(node)
{
for (var i = 0; i < node.nodes.length; ++i)
{
var child = node.nodes.item(i);
if (child.isContainer)
depends(child);
}
}
// Return a field surrounded by quotes and followed with a separator
function fmtField(fieldName, separator)
{
var str = "\"" + fieldName.rawValue + "\"" + separator;
return str;
}
// Force all fields in the form to be updated in the dataset
depends(xfa.form);
// Generate the CSV string that will be encoded in the barcode
var comma = ",";
var newLine = "\n";
var s = fmtField(accountNum, comma);
s += fmtField(formerFirstName, comma)
s += fmtField(formerMiddleInitial, comma);
s += fmtField(formerLastName, comma);
s += fmtField(newFirstName, comma)
s += fmtField(newMiddleInitial, comma);
s += fmtField(newLastName, newLine);
// Assign the string to the barcode for encoding
this.rawValue = s;