PDFのページ数と先頭ページのサイズを確認
PDFリーダーがすでに取得したページ寸法から、総ページ数と先頭ページのサイズが分かります。たとえば3ページで、先頭は612×792ポイントです。すべてのページを先に確認するので、壊れた一覧が正しい件数として通ることはありません。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
PDFリーダーが生成済みのメタデータから、正確な総ページ数と先頭ページの寸法を取得できます。各ページについて、幅と高さをPDFポイントで示した記述子をページ順に指定してください。すべての記述子を検証して件数を数え、先頭ページの幅と高さを明示的な単位とともに返します。PDFの解析後、文書の振り分け、表示、確認、保存に進む前に、簡潔で予測可能な概要が必要な処理に適しています。
ページ記述子を準備します
PDF内のページと同じ順序でpages配列を指定してください。各要素はwidthとheightを持つオブジェクトで、どちらもPDFポイント単位で指定します。1ポイントは1インチの72分の1であり、PDFライブラリで一般的に使われる座標単位です。
トリミング領域やメディア領域の寸法は整数とは限らないため、小数も使用できます。解析ツールが返した有効なページサイズを使い、回転の扱いは配列全体で統一してください。この機能はPDFのバイト列を開かず、寸法を推測せず、複数のページ領域から選択することもありません。
指定された記述子だけを集計します。後続ページの向きやサイズが異なる場合でも、すべてのページを含めてください。記述子の数が総ページ数になります。
配列の最初の要素が先頭ページとして扱われます。空の配列では有効な総数も先頭ページのサイズも報告できないため、エラーになります。
ページ数と先頭サイズを確認します
元の数値精度は維持され、丸め、拡大縮小、向きの正規化、インチやミリメートルへの換算は行われません。文書内でレター、A4、横向き、縦向き、独自サイズが混在していても、返される寸法は先頭ページだけです。ただし、結果を生成する前にすべての記述子を検証します。
一部に不正な要素がある一覧から、信頼できそうな件数だけが返され、解析結果の欠落が隠れることを防ぐためです。状態は保存されず、同じ入力には常に同じ結果が返ります。
PDFを振り分ける前に検証します
PDF解析と次の処理の間に置く簡潔な確認項目として、この概要を利用できます。文書受付サービスでは、上限ページ数を超えるファイルを拒否したり、先頭ページの向きに合わせてプレビュー配置を選んだり、件数と寸法を索引レコードへ追加したりできます。印刷処理では、元のファイルを送る前に先頭ページのサイズを所定のテンプレートと比較できます。
検証は厳密です。 pagesは空でない配列、各要素はオブジェクト、widthとheightは有限の正数でなければなりません。ネットワーク通信、アップロード、PDFのデコード、永続保存は行いません。
活用例
文書のページ数制限を適用
最小または最大ページ数の条件がある処理へPDFを受け入れる前に、検証済みの記述子を数えます。
プレビューの向きを選択
先頭ページの幅と高さを比較し、縦長、横長、正方形の表示枠から適切なものを選べます。
簡潔なPDFメタデータを保存
総ページ数と先頭の寸法を、検索索引、資産レコード、処理ログへ追加できます。
よくある質問
PDFファイル自体を読み込みますか?
いいえ。 PDFリーダーまたは解析ツールが生成済みの、順序付けられたページ記述子を受け取ります。
すべてのページサイズが返りますか?
いいえ。 すべての記述子を検証して総数を返しますが、寸法は最初の要素だけです。
総ページ数と先頭ページのサイズは何に使えますか?
次の処理の前の確認に使えます。ページ数の上限を超える書類を断る、先頭ページから縦向きか横向きのプレビューを選ぶ、印刷テンプレートの用紙サイズと合うか確かめる、といった使い方です。
ページの一覧が受け付けられないのはなぜですか?
各ページには0より大きい幅と高さが必要です。空の一覧、寸法の抜け、0やマイナスの値があると数えるのを止めるので、不完全な一覧から正しそうに見える件数が出ることはありません。
小数の寸法も使えますか?
はい、使えます。トリミング枠などの寸法は整数とは限らないため、小数もそのまま受け付け、四捨五入や単位の変換をせずに入力どおりの値を返します。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/pdf/page-count \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pages":[{"width":612,"height":792},{"width":612,"height":792},{"width":792,"height":612}]}'const res = await fetch("https://api.kit.forhosting.com/pdf/page-count", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pages": [
{
"width": 612,
"height": 792
},
{
"width": 612,
"height": 792
},
{
"width": 792,
"height": 612
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/page-count",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pages": [
{
"width": 612,
"height": 792
},
{
"width": 612,
"height": 792
},
{
"width": 792,
"height": 612
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/page-count", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pages":[{"width":612,"height":792},{"width":612,"height":792},{"width":792,"height":612}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pages":[{"width":612,"height":792},{"width":612,"height":792},{"width":792,"height":612}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/page-count", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"pages": [
{
"width": 612,
"height": 792
},
{
"width": 612,
"height": 792
},
{
"width": 792,
"height": 612
}
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.page_count",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_pages | 100000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
ページ数と先頭サイズを確認します
レスポンスには2つのトップレベルフィールドがあります。page_countは、pages配列内で検証された要素の数です。first_pageには最初の記述子からコピーしたwidthとheightに加え、unitとしてptが含まれるため、後続システムが単位を推測する必要はありません。したがって、first_pageに入る寸法は配列の順序だけで決まります。
PDFを振り分ける前に検証します
0、負数、欠落フィールド、文字列、無限大、NaNは自動補正されずエラーになります。1回のリクエストは記述子100000件までです。対話的な確認はブラウザーで実行でき、自動処理では1件$0.002のAPIから同一の決定論的なJSON構造を取得できます。
技術的な質問
widthとheightにはどの単位を使いますか?
どちらもPDFポイントで指定してください。レスポンスでは単位をptと表示します。
ページごとにサイズや向きが異なっても使えますか?
はい。後続の記述子は異なっても構いません。配列長が総数を、最初の要素がfirst_pageを決めます。
pages配列が空の場合はどうなりますか?
説明できる先頭ページがないため、invalid_inputエラーになります。