Others

ファイルがスクリプトをサポートしない画像ベースまたはフラット形式に変換された場合、PDF ドキュメントレベルの JavaScript スクリプトはどうなるか

What Happens to PDF Document-Level JavaScript Scripts When the File Is Converted to an Image-Based or Flat Format That Does Not Support Scripting

PDF JavaScript の仕組みと制御内容

PDF ファイルには、ドキュメントの表示中に特定のイベントが発生したときに実行される JavaScript コードを含めることができます。ページを開く、ページを閉じる、フォーム フィールド値の変更、ボタン上のマウス クリック、およびドキュメントの保存はすべて、埋め込みスクリプトをトリガーできるイベントです。このスクリプト機能により、静的なテキストや画像をはるかに超えたインタラクティブな機能が可能になります。たとえば、フォーム フィールドの検証、自動日付スタンプ、入力値からの合計の計算、ドキュメント レイヤーの動的な表示と非表示、Web サービス呼び出しを介した外部データ ソースとの統合です。

スクリプトの検出には数ミリ秒かかり、何時間もの再作業を防ぎます。

何を失うかを知ることで、正しい変換の選択が可能になります。

PDF リーダーの JavaScript エンジンは、完全なブラウザーの JavaScript 環境ではありません。 ECMAScript 仕様のサブセットに加えて、PDF ドキュメント操作用の Adobe 固有の拡張機能が実装されています。使用可能な API を使用すると、スクリプトでフォーム フィールド値の読み取りと変更、ページの表示設定の変更、マルチメディア要素の制御、およびフォーム データの URL への送信が可能になります。ただし、このエンジンには、ブラウザーの JavaScript が提供する DOM 操作機能、完全なネットワーク スタック、レンダリング コントロールがありません。埋め込みスクリプトを含む PDF 形式 は、JavaScript を含む Web ページよりもはるかに制限された環境です。

これらの制約にもかかわらず、PDF JavaScript は真にインタラクティブなドキュメントを作成するのに十分強力です。ローン申込書 PDF では、申込者がローン金額と金利を入力すると、月々の返済額をリアルタイムで計算できます。トレーニング証明書 PDF は、証明書を表示する前に、受信者の名前がサーバー側のデータベースと一致することを検証できます。オーダー フォームは、完成したデータをフルフィルメント システムの API に直接送信できます。文書ファイル内でのスクリプト実行に関するセキュリティ上の懸念が定期的に存在するにもかかわらず、JavaScript が PDF 仕様の一部として残っているのは、これらのインタラクティブな機能のためです。

WukongPDF

PDFから画像への変換を試してください

インストールは必要ありません。ブラウザで直接動作します。

始める →

PDF をフラット イメージ形式に変換すると JavaScript に何が起こるか

PNG、JPEG、TIFF、またはすべてのページをラスタライズして生成された画像のみの PDF のいずれであっても、PDF を画像形式に変換すると、ドキュメントの性質がインタラクティブから静的なものに根本的に変わります。変換プロセスでは、各ページがピクセル グリッドとしてレンダリングされ、変換時のページの外観が正確にキャプチャされます。 JavaScript スクリプト、フォーム フィールド、ボタン、ハイパーリンク、埋め込みビデオ、3D モデルなどのすべてのインタラクティブ要素は、レンダリングされたイメージにフラット化され、インタラクティブ オブジェクトとしては存在しなくなります。

JavaScript コード自体は変換または翻訳されません。これは、ラスタライズ プロセス中に他のすべての非ビジュアル ドキュメント要素とともに単純に破棄されます。結果のイメージ ファイルには、実行可能コード、イベント ハンドラー、およびいかなる種類の対話型ロジックも含まれません。 JavaScript が提供する動作は、フォームの計算、検証ルール、動的コンテンツの更新など、画像出力にはまったく含まれません。出力には、変換時のドキュメントの状態のスナップショットが表示されます。変更することはできず、時間内に固定されています。

PDF から Image への変換の場合、この JavaScript の削除は通常、意図的に行われます。画像形式のドキュメントは、アーカイブ スナップショット、ソーシャル メディア共有、プレゼンテーションへの埋め込みなど、対話性が必要ない場合や望ましくない場合に使用されます。 JavaScript が存在しないことは、未知のソースからスクリプトを実行する際のセキュリティ上の懸念を排除し、ドキュメントがすべてのデバイスおよび表示アプリケーションで同じようにレンダリングされることを保証するため、これらのコンテキストでは機能となります。

JavaScript 機能の喪失により問題が発生するシナリオ

すべての PDF から画像への変換が、失われる JavaScript 機能を認識して実行されるわけではありません。ストレージの最適化や形式の標準化のために PDF のバッチを画像に処理する自動変換パイプラインは、オペレーターに警告することなくスクリプトやインタラクティブ要素を静かに破棄する場合があります。アーカイブ用に 100 個の PDF フォームを画像ベースの PDF にバッチ変換すると、警告が 1 つも生成されずにすべてのファイルのフォーム機能が破壊される可能性があります。

最も有害なシナリオには、静的にレンダリングされたビューでは表示されない重要な情報を JavaScript が提供するドキュメントが含まれます。ユーザー入力に基づいてコンテンツを条件付きで表示するスクリプトを含む PDF では、変換前に正しい表示状態を生成するスクリプトが実行されなかった場合、変換された画像に間違ったコンテンツ状態が表示される可能性があります。 JavaScript を使用してユーザーの場所の選択に基づいてさまざまなレート表を表示する財務開示 PDF では、変換された画像にはデフォルトのレート表のみが表示されるか、最悪の場合レート表がまったく表示されません。

デジタル著作権管理に JavaScript を使用する PDF ドキュメントは、形式変換の影響を特に受けます。 JavaScript によって強制されるアクセス許可によって印刷、コピー、または編集が制限されている PDF は、画像に変換されるとそれらの保護が完全に失われます。制限を課していた JavaScript はもう存在しないため、イメージ バージョンは制限なく印刷、コピー、編集できます。 JavaScript ベースの DRM を使用している組織は、形式変換によりドキュメントの保護が効果的に剥奪されることに注意する必要があります。

フォーマット変換が必要な場合の対話型機能の維持

PDF を別の形式に変換する必要があるが、そのインタラクティブ機能を保持する必要がある場合は、別の変換アプローチが必要です。目標は、各ページの外観のレンダリングから、インタラクティブな動作を同等の機能をサポートする形式に移行することに移行します。

JavaScript が埋め込まれた HTML への変換は、インタラクティブ PDF の最も直接的な移行パスです。 PDF のフォーム フィールドは、ブラウザの JavaScript に変換された検証スクリプトと計算スクリプトを備えた HTML フォーム要素になります。ドキュメントのレイアウトはHTMLとCSSになります。ソース形式とターゲット形式の両方が JavaScript の実行をサポートしているため、インタラクティブな動作は形式が変更されても存続します。この変換は複雑で、完璧になることはほとんどありませんが、ラスターベースの変換では破壊される機能が保持されます。

特定のインタラクティブな要素のみがハイブリッド アプローチで存続する必要があるドキュメントでは、それらの要素は保持され、残りはフラット化されます。フォーム フィールド、そのスクリプト、およびそのビジュアル コンテキストを Web フォームに抽出し、元の PDF フォーム送信を処理するのと同じバックエンド システムにフィードします。データ収集ワークフローは Web フォームを通じて続行されますが、PDF 自体は画像としてアーカイブされます。このアプローチでは、アーカイブされた文書に埋め込まれた双方向性の喪失を許容しながら、双方向性がサポートされているビジネス プロセスが中断されることなく継続されることを保証します。

PDF を変換する前に JavaScript が含まれているかどうかを確認する方法

偶発的な JavaScript の損失を防ぐには、変換を開始する前にドキュメントにスクリプトが含まれているかどうかを確認することから始まります。ほとんどの PDF ビューアには、埋め込まれたスクリプトを一覧表示する方法が用意されています。 Adobe Acrobat では、[ツール] メニューの JavaScript パネルに、ドキュメント内のすべてのスクリプトがトリガー イベントごとに整理されて表示されます。サードパーティの PDF 分析ツールは、埋め込まれた JavaScript を列挙し、どのドキュメント イベントにスクリプトが添付されているかをレポートすることもできます。

一般的な JavaScript を利用した機能を手動で簡単に確認することも役立ちます。 PDF に値を自動計算するフォーム フィールド、ページの他の部分のコンテンツを変更するドロップダウン リスト、または単純なナビゲーションを超えるアクションを実行するボタンがある場合、ほぼ確実に JavaScript が含まれています。これらの機能を持つドキュメントには、バッチ変換操作の前に、慎重に処理するためにフラグを付ける必要があります。

自動パイプラインを通じて大量の PDF を処理する組織の場合、変換段階の前に JavaScript 検出ステップを追加すると、サイレント機能の損失が防止されます。プリフライト スクリプトは、受信した各 PDF をスキャンして埋め込まれた JavaScript オブジェクトを探し、スクリプトを含むドキュメントを自動ラスタライズ パイプラインではなく手動レビュー キューにルーティングできます。この検出ステップでは基本的に処理時間はかからず、対話型機能の不可逆的な損失が防止されます。

WukongPDF の変換ツールには、形式変換が開始される前に埋め込まれた JavaScript を識別するプリフライト チェックが含まれており、インタラクティブ コンテンツが失われることを警告するため、ラスタライズを続行するか、代替の変換パスを選択するかについて情報に基づいた決定を下すことができます。

形式変換中の JavaScript の削除によるセキュリティへの影響は、両方の方向から検討する価値があります。 JavaScript が埋め込まれた PDF を静的画像に変換すると、正規のインタラクティブ機能とともに悪意のあるスクリプトのリスクが排除されます。セキュリティを重視する組織では、外部ソースから受信した PDF を意図的にラスタライズして、特に文書が内部ネットワークに入る前に JavaScript やその他のアクティブ コンテンツを削除することがあります。セキュリティの観点から見ると、JavaScript を削除する形式変換はバグではなく制御です。重要なのは、対話性が重要なドキュメントを別の処理パスにルーティングできるように、それがいつ発生するかを認識することです。

インタラクティブ PDF の長期アーカイブのベスト プラクティスは、元のインタラクティブ バージョンとフラット化されたアーカイブ バージョンの両方を保存することです。オリジナルでは、将来必要になるユーザーのために完全なインタラクティブ機能が保持されています。アーカイブ バージョンは、プラットフォームが PDF JavaScript をサポートしているかどうかに関係なく、将来の表示プラットフォームで同じように表示される、形式が安定した参照コピーを提供します。デュアルフォーマットアーカイブは、インタラクティブな PDF コンテンツのランタイム環境が存在しない可能性がある将来でも、保存とアクセスの両方を提供します。

さまざまな受信 PDF 形式を処理する自動ドキュメント処理パイプラインを構築している組織では、形式変換の前に JavaScript の検出とルーティングのステップを組み込むことで、インタラクティブなドキュメントが検査なしでラスタライズされるときに発生するサイレント データ損失を防ぐことができます。検出ステップにはミリ秒単位の処理時間がかかります。失われたインタラクティブ機能を手動で再構築するのを防ぐには、数時間または数日かかります。

スクリプト可能な PDF から静的画像形式への変換は、バッチ変換パイプラインの意図しない副作用としてではなく、意図的に実行する必要がある不可逆的な操作です。 PDF 内の JavaScript がドキュメント ユーザーが依存する機能を提供する場合、事前検査なしの形式変換は機能的にデータ損失と同等であり、ドキュメント処理ワークフローにおける他の不可逆的なデータ変換と同じ真剣さで扱う必要があります。

WukongPDF

PDFから画像への変換を試してください

インストールは必要ありません。ブラウザで直接動作します。

始める →