PDFの指定位置に空白ページを挿入
既存のPDFを手作業で作り直さずに、空白ページを挿入できます。PDFと1から始まる位置を指定すると、その位置のページと同じ寸法の空白ページが配置されます。末尾へ追加する場合は、現在の最終ページの直後の位置をご指定ください。処理は決定的で、元のページ順を維持し、存在しない位置は明確にエラーとして扱います。
無料で実行
処理はブラウザ内で完結します。ファイルは送信されません。無料でご利用いただけます。
挿入位置を正確に指定します
位置は、完成した文書を読む方に新しいページがどこに見えるかを表すため、1から数えます。位置1では現在の先頭ページの前に空白ページが入ります。位置2では現在の1ページ目と2ページ目の間に入ります。5ページの文書で位置6を指定すると、5ページ目の後ろに追加されます。有効なのはこの範囲だけで、最小値は1、最大値は現在のページ数に1を加えた値です。この明確な規則により、曖昧な指定のまま誤った場所へページが入ることを防げます。位置が0、負数、小数、または末尾追加位置を超える場合、入力エラーを返し、元の文書は変更しません。自動処理へ組み込む前に、実際に送信する文書のページ数を確認して位置を算出してください。結果には挿入位置と新しい総ページ数が表示されるため、保存や転送の前に変更内容を確認できます。
空白ページのサイズを決める仕組み
挿入されるページには、指定位置に現在あるページの有効なMediaBoxを使用します。縦向きのレターサイズページの前へ挿入すれば、同じ縦向きサイズの空白ページが作成されます。横向きや独自サイズのページの前なら、その寸法を維持します。文書末尾へ追加する場合は参照できる次ページがないため、既存の最終ページのサイズを複製します。この動作は、スキャン資料、プレゼンテーション配布物、設計資料、結合レポートなど、複数サイズが混在するPDFで便利です。新しいページは意図的に空白であり、コンテンツストリーム、注釈、フォーム項目、複製された印などを含みません。引き継ぐのはページ形状だけです。応答にはPDFポイント単位で計算した幅と高さも含まれるため、選ばれた寸法をご確認いただけます。元ページの順序と内容は維持されます。
対応する入力を用意して結果を確認します
クラシック形式のPDFを、プレーンなPDFテキストまたはbase64のPDFデータURIとして指定してください。現在のベータ版は、安全に再構築できない構造を推測せず、相互参照ストリームを使う文書を明示的に拒否します。パーサーはカタログとページツリーを読み、入れ子のノードをたどり、継承されたMediaBoxを解決し、正しい親へ新しいページ参照を追加します。さらに影響するページ数を更新し、有効なクラシック相互参照表を再構築します。ネットワーク、時刻、乱数、ストレージ、モデルは使用しません。処理後は、返されたページ数、挿入位置、幅、高さを確認してからPDFを保存または転送してください。本番の自動化では、代表的なファイルで事前にお試しください。相互参照ストリームが拒否された場合は、信頼できるPDFツールでクラシック形式へ変換してから再実行してください。APIの各リクエスト料金は$0.002です。同じ決定的処理をブラウザーでも対話的に利用できます。
活用例
区切り用紙を追加する
結合レポートのセクション間へ空白ページを入れ、印刷物を分けたり書き込みやすくしたりできます。
両面印刷の配置を整える
章やフォームが意図した表面から始まるよう、必要な場所へ空白ページを追加できます。
署名やメモの余白を作る
元のPDFを作り直したり拡大縮小したりせず、資料の隣に同じサイズの空白ページを配置できます。
よくある質問
有効な位置はどこですか?
1から現在のページ数に1を加えた値までの整数をご指定ください。最大値では末尾へ追加します。
どのページサイズが使われますか?
挿入位置にあるページの有効なMediaBoxを複製します。末尾へ追加する場合は、既存の最終ページを参照します。
新しいページに内容は入りますか?
いいえ。指定された寸法だけを持ち、コンテンツ、注釈、フォーム項目、複製画像は含みません。
位置が範囲外の場合はどうなりますか?
入力エラーが返され、変更後のPDFは生成されません。
APIリクエストの料金はいくらですか?
各リクエストの料金は$0.002です。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/pdf/insert-blank-page \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pdf":"https://ejemplo.com/documento.pdf","position":2}'const res = await fetch("https://api.kit.forhosting.com/pdf/insert-blank-page", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pdf": "https://ejemplo.com/documento.pdf",
"position": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/insert-blank-page",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pdf": "https://ejemplo.com/documento.pdf",
"position": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/insert-blank-page", 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","position":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pdf":"https://ejemplo.com/documento.pdf","position":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/insert-blank-page", 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",
"position": 2
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.insert_blank_page",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |