PDFメタデータを設定
余分な空白の入ったタイトルは「Quarterly Report」に整い、キーワードのFinanceとfinanceは最初の書き方で1つにまとまります。アーカイブや出版システムに入れる前にPDFの情報を整えられ、ファイル自体は変更しません。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
処理はブラウザ内で完結します。ファイルは送信されません。無料でご利用いただけます。
文書をアーカイブ、出版システム、配信工程へ送る前に、PDFメタデータを確実に整えられます。この機能は、PDF入力が対応形式であることを確認し、内容のある空でないタイトルを必須としたうえで、作成者、件名、キーワードを一貫したオブジェクトへ正規化します。余分な空白を取り除き、連続する空白をまとめ、空のキーワードを除外し、最初の有効な表記を残しながら重複を削除します。結果は決定的で、ネットワークアクセスや実行時の状態に左右される変更はなく、後段のPDFライターへそのまま渡せます。
有効なPDFとメタデータオブジェクトをご用意ください
PDFは、対応するいずれかの形式で送信してください。設定する文書プロパティはメタデータオブジェクト内へ入れてください。空のタイトルでは検索結果、アーカイブ、ブラウザーのタブ、文書管理システムでファイルを識別できないため、タイトルは必須です。
作成者、件名、キーワードは任意です。各スカラー値は文字列である必要があります。キーワードには、文字列の配列、またはコンマかセミコロンで区切った文字列を指定できます。
形式を明示することで、値がPDF書き込み工程に届く前に問題を診断しやすくなります。また、入力の転送形式と説明データが分離されるため、正規化済みのメタデータを記録、確認、比較したり、文書から再抽出せず別の機能へ渡したりできます。
正規化の動作を正確にご確認ください
テキストの正規化は、内容を必要以上に変えないよう慎重に行われます。先頭と末尾の空白を削除し、内部で連続するスペース、タブ、改行は通常のスペース1個にまとめます。大文字と小文字、句読点、アクセント、意味のある表現は変更しません。
任意の作成者または件名がトリミング後に空になった場合、nullや空のプレースホルダーとして返さず、出力から省略します。キーワードにも同じ空白処理を適用します。空の項目を破棄し、大文字と小文字を区別せずに重複を比較します。
そのため「Annual Report」と「annual report」は1つのキーワードになり、最初に現れた表記が保持されます。順序も最初の有効な出現に従うため、テストや後段キャッシュで予測可能な結果になります。タイトルにも同じ空白規則を適用しますが、省略はできません。
値がない場合、文字列でない場合、空白だけの場合は、無効な入力としてエラーを返します。
活用例
アーカイブ移行を整理
旧文書のレコードを新しいアーカイブへ移す際に、空白の不整合と重複キーワードを除去します。
PDF自動生成を保護
高コストなレンダリングやPDFメタデータ書き込みを始める前に、タイトルのないレポートを停止します。
よくある質問
この機能はPDFのバイトを変更しますか?
いいえ。 PDF表現を検証し、後段のPDFライター向けに正規化したメタデータを返します。
キーワードを1つの文字列で指定できますか?
はい。 コンマまたはセミコロンで文字列を分割します。文字列の配列も指定できます。
重複するキーワードはどのように処理されますか?
空白の正規化後に大文字と小文字を区別せず削除し、最初の表記と順序を保持します。
タイトルが空の場合はどうなりますか?
受け付けられません。空のタイトルでは検索結果やアーカイブ、ブラウザのタブでファイルを見分けられないため、タイトルは必須です。空白だけのタイトルも空とみなします。
大文字・小文字や句読点は変わりますか?
いいえ、変わりません。大文字と小文字、句読点、アクセント記号、言葉の内容はそのまま残り、整えるのは前後の空白と連続した空白だけです。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/pdf/set-metadata \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pdf":"https://ejemplo.com/documento.pdf","metadata":{"title":"Quarterly Report","author":"Ada Lovelace","subject":"Operations","keywords":["finance","quarterly report"]}}'const res = await fetch("https://api.kit.forhosting.com/pdf/set-metadata", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pdf": "https://ejemplo.com/documento.pdf",
"metadata": {
"title": "Quarterly Report",
"author": "Ada Lovelace",
"subject": "Operations",
"keywords": [
"finance",
"quarterly report"
]
}
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/set-metadata",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pdf": "https://ejemplo.com/documento.pdf",
"metadata": {
"title": "Quarterly Report",
"author": "Ada Lovelace",
"subject": "Operations",
"keywords": [
"finance",
"quarterly report"
]
}
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/set-metadata", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pdf":"https://ejemplo.com/documento.pdf","metadata":{"title":"Quarterly Report","author":"Ada Lovelace","subject":"Operations","keywords":["finance","quarterly report"]}}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pdf":"https://ejemplo.com/documento.pdf","metadata":{"title":"Quarterly Report","author":"Ada Lovelace","subject":"Operations","keywords":["finance","quarterly report"]}}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/set-metadata", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"pdf": "https://ejemplo.com/documento.pdf",
"metadata": {
"title": "Quarterly Report",
"author": "Ada Lovelace",
"subject": "Operations",
"keywords": [
"finance",
"quarterly report"
]
}
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.set_metadata",
"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とメタデータオブジェクトをご用意ください
base64のPDFデータURI、PDFシグネチャーで始まる未加工文字列、パスがPDFを示すHTTPS URL、またはkitのアップロード参照を利用できます。この機能は表現形式を検証しますが、リモートURLのダウンロードや文書バイトの書き換えは行いません。
正規化の動作を正確にご確認ください
時計、乱数、外部サービス、環境固有の状態は判断に関与しないため、同一のJSON入力からは常に同一のJSON出力が得られます。
正規化した結果を安全な文書工程でお使いください
応答には、検証済みのPDF表現とメタデータオブジェクトが含まれます。不正なレコードを早期に拒否し、整えた値を個別に確認して、合格したレコードだけに高コストな文書処理を実行できます。大量移行でも、表記の異なる空白や重複キーワードが数千件の文書で検索分類を乱す問題を抑えられます。ネットワーク要求も状態保存も行わないため、ブラウザーとサーバーの工程で一貫して動作し、どちらにも同じ正規化済み契約を提供します。メタデータには必須の正規化済みタイトルと、有用な内容を持つ任意フィールドだけが入ります。これは準備と検証の工程であり、PDFバイナリーそのものを編集する機能ではありません。後段のライターは応答を受け取り、対応するPDF情報フィールドまたはXMPフィールドを設定し、署名、暗号化、保存、バイト直列化に関する独自の規則を適用できます。この分離は、フォーム、表計算、コンテンツシステム、自動エクスポートからメタデータを取得するときに役立ちます。呼び出し料金は1項目あたり$0.002なので、検証するレコード数に応じて費用を予測できます。
連携の活用例
出版フォームを検証
編集者が入力したタイトルを確認し、最終PDFを書き込む前に任意の説明フィールドを正規化します。
技術的な質問
どのメタデータフィールドに対応していますか。
タイトル、作成者、件名、キーワードに対応します。タイトルは必須で、ほかは任意です。
タイトルが空白だけの場合はどうなりますか。
正規化後にタイトルが空になるため、invalid_inputエラーで要求が失敗します。
1回の要求にはいくらかかりますか。
検証済みの各項目は$0.002で、ネットワークやモデルの追加料金はありません。