PDF Filler は、既存の PDF ベースのフォームの完成を支援する RESTful サービス (API) であり、Web 開発者がブラウザベースのフォームと最新の Web 標準を使用して情報収集を容易にできるようにします。
PDF Filler は、事実上あらゆる暗号化されていない PDF で動作し、入力可能なフォーム (事前定義された入力フィールドのある PDF など) と入力不可能なフォーム (スキャンされた PDF など) の両方をサポートします。公開されている PDF への URL を渡すだけです。 PDF Filler は、既存の Web ページに HTML フォームを埋め込むために必要なマークアップを自動的に作成することもできます。
このプロジェクトは、pdftk と prawn のフォーム入力ロジックを抽象化します。
PDF Filler は、フィールド名と値のキー => 値のペアを受け入れることによって機能します。これらのフィールドは、入力可能な PDF フォーム フィールドにすることも、入力できないフィールドの任意の X/Y 座標にすることもできます。入力可能な PDF の場合、キーはフィールド名を表す必要があります。入力不可能な PDF では、キーは以下で説明するようにフィールド座標を表す必要があります (例: 100,100
)。どちらの場合も、フィールド値には、そのフィールドに対するユーザー入力が含まれている必要があります。
フィールド名は、オープンソース PDF ユーティリティ pdftk を使用してローカルで検出することも、サービスを使用して動的に検出することもできます。
特定の PDF 内のすべてのフィールドのリストを取得するには
/fields?pdf={URL to the PDF}
特定の PDF 内のすべてのフィールドの JSON 表現を取得するには
/fields.json?pdf={URL to the PDF}
PDF に記入するには、 /fill
に対してPOST
リクエストを発行します。 POST データは、key => value の形式である必要があります。ここで、key はフィールド名を表し、value はフィールド値を表します。必ず「pdf」キーと入力する PDF の URL を渡してください。このサービスは、入力された PDF をダウンロードとして返します。
注: HTML がフォームを処理する方法により、角括弧などの特定の特殊文字はサービスに適切に POST されません。 PDF フィールドに予約文字が含まれている場合は、POST の前にフィールド名を URL エンコードするだけです。
入力可能な PDF フォームの汎用 HTML 表現を取得するには
/form?pdf={URL To PDF}
入力不可能な PDF (構造化フォームを持たないスキャンされた PDF やその他の PDF) では、X、Y 座標、および (オプションで) ページ番号を渡す必要があります。このデータは、フィールドの次の命名規則を使用して渡されます: x,y,page
(または単にx,y
) ここで、X と Y はドキュメントの左下隅からのポインター座標を表します。ページが指定されていない場合は、最初のページが想定されます。
データはプログラム的に (API などを介して) 送信することも、標準の Web ベースのフォームとして送信することもできます。たとえば、HTML フォームを構造化するには、次のように行うことができます。
< form method =" post " action =" /fill " >
<!-- A standard, fillable field, simply pass the field name -->
< label > First Name: < input type =" text " name =" first_name " /> < label >
<!-- A non-fillable field for which we pass coordinates -->
< label > Last Name: < input type =" text " name =" 100,100,1 " /> < label >
< input type =" submit " value =" Submit " />
</ form >
$ curl -L https://get.rvm.io | bash -s stable --ruby
)gem install bundler
)git clone [email protected]:GSA-OCSIT/pdf-filler.git
、ターゲット ディレクトリにcd
(おそらくpdf-filler
)bundle install
実行するには、プロジェクトのディレクトリからコマンドruby app.rb
実行するだけです。サービスはデフォルトでポート4567
で公開されます。
PDF Filler は Web サービスとして自由に使用できます。ただし、ソース コードを取得してローカルでホストしたい場合は、実際には非常に簡単です。
PDF Filler は pdftk を使用してアクション フォームの入力を処理します。 pdftk は自由にダウンロードして、ほとんどのシステムにインストールできます。 /usr/local/bin/pdftk
以外の場所にインストールされている場合は、環境変数PATH_TO_PDFTK
適切なパスに設定して構成を更新してください。
PDF Filler は Ruby で書かれており、Sinatra を使用して RESTful API を生成します。
PDF Filler は、サーバー上のバックエンド サービスとして簡単に展開できます。導入および設定方法の例として、http://www.kalzumeus.com/2010/01/15/deploying-sinatra-on-ubuntu-in-that-i-employ-a-secretary/ の手順に従ってください。アプリをマシン上のバックエンド サービスとして起動します。この目的のためにアプリの一部である daemon.rb というファイルがあります。
このアプリは、heroku などのホスティング サービスでホストされるように設計されています。 Heroku を使用している場合は、必ず「Bamboo」ビルド (pdftk でコンパイルされる) を選択し、 PATH_TO_PDFTK
の環境設定を/usr/bin/pdftk
に設定してください。
誰でもフォークしてプル リクエストを送信してプロジェクトに貢献することが奨励されています。 (GitHub を初めて使用する場合は、基本的なチュートリアルから始めるとよいでしょう。)
このプロジェクトに貢献することにより、MIT ライセンスの条項に基づいて、全世界的、ロイヤルティフリー、永久、取消不能、非独占的、譲渡可能なライセンスをすべてのユーザーに付与することになります。
このプロジェクトは、17 USC 105 に基づく米国政府の著作物であり、MIT ライセンスの条件に基づいて配布されています。