PDFフォームの必須フィールドと値を検証
書き込む前に、氏名Ada Lovelace、生年月日1815-12-10、連絡方法のメールを4つの決まりと照合し、未回答のメルマガ欄は任意として示します。2025-02-29のような実在しない日付は受け付けません。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
処理はブラウザ内で完結します。ファイルは送信されません。無料でご利用いただけます。
PDFフォームへの入力処理を始める前に、使用するデータを検証します。すべてが定義に合えば、検証済みの値だけを整理して返します。
書き込む前に値を確かめる理由
PDFフォームへの書き込みは、名前の付いた入力欄に値を入れていく作業です。ところが、項目名の綴りが1文字違うだけで、その値は書き込みの段階で黙って消えてしまいます。日付の形が崩れていたり、選択肢にない言葉が入っていたりしても、見た目では気づきにくいものです。このツールは入力欄の定義と値の組を受け取り、必須項目、値の種類、実在する日付、許された選択肢、重複した定義、定義にない名前を、実際の書類に触れる前に確認します。PDFそのものは開かず、変更もしません。
確認の決まりとよくある間違い
必須の指定を省いた項目は任意として扱われ、空白だけの文字は未入力とみなされます。値は自動では変換されません。日付は1815-12-10のような年・月・日の形で、実在する日でなければならず、2025-02-29は受け付けません。選択肢は大文字と小文字まで完全に一致する必要があります。最初に見つかった誤りで確認が止まり、どの項目が問題かが示されます。何百通もの書類をまとめて作るときほど、1つの対応付けの誤りが全体に響くので、書き込みの前に必ず通しておくと安心です。
厳密な値検証の規則を確認します
値の型は自動変換せずに検証します。真偽値はtrueまたはfalseでなければならず、"yes"、1、0は認められません。日付は曖昧さのないYYYY-MM-DD形式を使い、実在する暦日である必要があります。
そのため、2025-02-29のような値は拒否されます。単一選択の値は、大文字と小文字も含め、定義済みの文字列のいずれかと完全に一致しなければなりません。複数選択は、許可された重複のない文字列からなるarrayである必要があります。
不明な選択肢や同じ選択肢の繰り返しはエラーになります。この厳密さにより、見た目では気付きにくい誤った文書が作られる前に、マッピングの問題を発見できます。
活用例
登録フォームを事前確認します
従業員や顧客の入力済みフォームを生成する前に、氏名、日付、同意の真偽値、必須選択を確認します。
文書の一括処理を保護します
不正なレコードがPDF書き込みキューへ届き、不完全な文書を作る前に拒否します。
よくある質問
日付はどのように検証されますか?
YYYY-MM-DD形式で、うるう年の規則を含めて実在する暦日であることを確認します。
必須の項目に空白だけが入っているとどうなりますか?
空欄として扱われ、確認は失敗し、どの項目かが示されます。必須の文字項目は意味のある値が入って初めて完了とみなされます。任意の項目が未入力の場合は、送られなかった項目として一覧に載るだけです。
「はい」や文字で書いた「12」は自動で変換されますか?
いいえ、変換はしません。はい・いいえの項目には真か偽の値が必要で、「yes」や1では通りません。整数も数値として渡す必要があり、文字の「12」は受け付けません。
定義にない名前の値を送るとどうなりますか?
その時点で確認は失敗します。綴りを間違えた項目名は、書き込みの段階では黙って消えてしまうためです。先に止めることで、値が抜けた書類ができるのを防げます。
複数選択の項目で同じ選択肢を2回選べますか?
選べません。複数選択の値は、許された選択肢を重複なく並べたものでなければなりません。同じ選択肢の繰り返しや、一覧にない選択肢があると確認は失敗します。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/pdf/fill-form-fields \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"fields":[{"name":"full_name","type":"text","required":true},{"name":"age","type":"integer","required":false}],"values":{"full_name":"Ada Lovelace","age":36}}'const res = await fetch("https://api.kit.forhosting.com/pdf/fill-form-fields", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"fields": [
{
"name": "full_name",
"type": "text",
"required": true
},
{
"name": "age",
"type": "integer",
"required": false
}
],
"values": {
"full_name": "Ada Lovelace",
"age": 36
}
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/fill-form-fields",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"fields": [
{
"name": "full_name",
"type": "text",
"required": true
},
{
"name": "age",
"type": "integer",
"required": false
}
],
"values": {
"full_name": "Ada Lovelace",
"age": 36
}
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/fill-form-fields", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"fields":[{"name":"full_name","type":"text","required":true},{"name":"age","type":"integer","required":false}],"values":{"full_name":"Ada Lovelace","age":36}}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"fields":[{"name":"full_name","type":"text","required":true},{"name":"age","type":"integer","required":false}],"values":{"full_name":"Ada Lovelace","age":36}}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/fill-form-fields", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"fields": [
{
"name": "full_name",
"type": "text",
"required": true
},
{
"name": "age",
"type": "integer",
"required": false
}
],
"values": {
"full_name": "Ada Lovelace",
"age": 36
}
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.fill_form_fields",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_mb | 25 |
max_pages | 200 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
フィールド定義と値のオブジェクトを渡すと、必須項目、厳密な型、実在する日付、許可された選択肢、重複した定義、想定外のキーを確認します。処理は決定的であり、PDFを開いたり変更したりしないため、ブラウザでの事前確認にも、APIを利用する文書自動化の安全確認にも適しています。
フォームの仕様を明確に定義します
利用できる型は、テキスト、有限の数値、整数、真偽値、ISO形式の暦日、単一選択、複数選択です。定義は値オブジェクトの仕様になります。渡されるすべての値は、いずれかの定義に対応しなければなりません。requiredを省略した場合はfalseとして扱います。テキストが空白文字だけの場合は、入力済みではなく未入力と判断します。まず、PDFフォームの各フィールドについて、一意の名前、対応する型、必要に応じて必須かどうかを定義します。選択フィールドには選択肢の一覧も必要です。これにより、許可された値と任意の文字列を区別できます。同じフィールド名が複数あると検証結果が曖昧になるため、重複は拒否されます。大文字と小文字を含め、後続のPDF入力処理が期待するフィールド名を正確に使用してください。この機能はPDFを解析せず、フィールド名を推測しません。フィールドの検出と値の検証を分けることで、それぞれをテストしやすくなり、同じ仕様を多数のレコードに再利用できます。必須に設定したフィールドには有効な値が必要です。
厳密な値検証の規則を確認します
整数は小数部分のないJSON数値として渡す必要があり、文字列の"12"は使用できません。数値フィールドでは有限のJSON数値だけを受け付けます。任意フィールドは、省略、null、空文字列のいずれでも構いません。その場合はmissing_optionalに記録され、validated_valuesには入りません。必須フィールドで同じ状態になるとエラーになり、最初の問題で処理を停止して対象名を示します。
PDF生成の前段に検証を配置します
日付の書式変更、数値の丸め、選択肢の並べ替え、既定値の補完は行いません。不明なキーは拒否されます。アルゴリズムはローカルで動作し、ネットワーク、乱数、モデル推論、保存状態を使用しません。同じ入力からは常に同じ結果が得られます。アプリケーションのデータをPDFフィールド名へ対応付けた直後、実際に文書へ書き込むツールを呼び出す前に、この機能をご利用ください。成功結果にはvalid true、確認したフィールド定義の数、受理された値、指定されなかった任意フィールドが含まれます。validated_valuesは、受理したJSON値をそのまま保持します。フィールド名の入力ミスが、PDFへの書き込み時に何の通知もなく無視されることを防ぐためです。この特性は、1つの誤ったマッピングが多数の文書へ影響し得る一括処理で特に役立ちます。フィールド定義をテンプレートの版とともに保存し、各レコードをその版に対して検証して、成功したものだけを入力工程へ渡してください。対話的な確認はブラウザで行え、自動文書作成に組み込む場合のAPI料金は1回$0.002です。
連携の活用例
テンプレート対応をテストします
アプリケーションの出力キーとJSON型が、版管理されたPDFテンプレートの仕様に合っているか確認します。
技術的な質問
この機能はPDFを編集しますか?
いいえ。フィールド定義と値だけを検証します。検証済みの値は、別のPDF入力機能へ渡してください。
必須フィールドがない場合はどうなりますか?
必須フィールド名を示すinvalid_inputエラーでリクエストが失敗します。
数値を表す文字列は数値へ変換されますか?
いいえ。厳密に検証するため、数値や整数はJSON数値として指定する必要があります。
定義にないフィールドを値に含められますか?
いいえ。入力ミスや古いテンプレート対応を発見できるように、不明なキーは拒否されます。
APIリクエストの料金はいくらですか?
1回の料金は$0.002です。決定的な検証処理はブラウザでも実行できます。