ユーザーのローカル ディスクにファイルを書き込むすべての Acrobat JavaScript 関数は、セキュリティ リスクをもたらすため、使用にはいくつかの制限があります。これらの関数には、doc.saveAs()
などのすべてのデータ エクスポート関数が含まれdoc.exportAsFDF()
ます。ここで
読むことができるように:
Acrobat は、これらの機能に対して 2 つの操作モード (パスありとパスなし) を提供します。関数にパス パラメータが指定されていない場合、Acrobat はファイル ブラウザ ダイアログを表示します。ファイル ブラウザ ダイアログにより、ユーザーはデータをシステムに保存する方法を制御できます。関数へのパスが指定されている場合、ダイアログは表示されず、操作は静かに処理されます。つまり、ユーザーは、データがハード ドライブに保存されたことを必ずしも認識しません。これはセキュリティ上の問題であるため、これらの関数のいずれかをサイレント モードで使用するには、関数を特権コンテキストから実行する必要があります。これは、コードが信頼できる場所に存在する必要があることを意味します。たとえば、コンソール ウィンドウ、バッチ プロセス、または認証済み PDF から実行されるコードには特権が与えられます。これらの関数のいずれかがパス パラメータとともに使用され、非特権コンテキストで実行されると、Acrobat は例外をスローします。この制限の背後にある理由は、コードが信頼できない場合、ユーザーはファイルの場所を明確に選択する必要があるためです。
ユーザーのシステムにデータを保存する際のもう 1 つの制限は、パスの指定がセーフ パスでなければならないことです。安全なパスとは、ユーザーのハード ドライブ上の制限された場所、またはセキュリティ リスクを引き起こす可能性のある場所を指していないパスです。これらの制限された場所の例としては、システム フォルダーやハード ドライブのルート フォルダーがあります。制限される可能性のあるその他のフォルダーは、オペレーティング システムと Acrobat 開発者の感性に依存します。どちらも十分に文書化されていないため、これらの関数は慎重に使用することをお勧めします。
「安全なパス」について、Acrobat JS APIdoc.saveAS
メソッドのドキュメントには次のように記載されています。
Acrobat 6.0 では、パラメーターの 1 つによって渡されたパスに基づいてローカル ハード ドライブにデータを書き込む JavaScript メソッドの安全なパスの概念が導入されました。パスは、ルート、Windows、またはシステム ディレクトリなど、システムの重要なフォルダーを指すことはできません。パスは、他の不特定のテストの対象にもなります。多くのメソッドでは、保存するデータのタイプに適した拡張子をファイル名に付ける必要があります。一部のメソッドには、上書き禁止の制限がある場合があります。これらの追加の制限は、ドキュメントに記載されています。通常、パスが安全でないと判断された場合、NotAllowedError 例外がスローされ (Error オブジェクトを参照)、メソッドは失敗します。
ここでも読むことができるように、パラメーターexportDataObject
がないため、メソッドでそれを行うことはできません:path
「cName」パラメーターは必須入力であり、エクスポートされる特定の添付ファイルを指定します。path パラメータがないことに注意してください。実際には、この関数への「cPath」入力がありますが、もはや有効ではありません。この関数でパスを使用しようとすると、失敗して例外がスローされます。「cPath」パラメーターがすべての使用から削除されたため、関数がどのコンテキストから呼び出されるかは問題ではありません。
さらなる参考文献: