N-up PDFページ
N-up PDFページ配置計算ツールは、元のPDFページ寸法と対応する面付け数から、完全な配置計画を作成します。グリッドの行列数、必要な出力用紙の幅と高さ、各ページセルの正確な位置を返します。幅と高さに同じ単位を指定すると、結果にもその単位が保たれます。計算は決定的であり、文書の変更、アップロード、レンダリングは行いません。
無料で実行
元のPDFページ寸法から始めます
N-up配置は、元のPDFページ1枚のメディアサイズを基準にします。その寸法をpage_widthとpage_heightに指定し、両方で同じ単位をお使いください。PDFソフトウェアでは一般にポイントで寸法が示され、72ポイントが1インチに相当しますが、本ツールは特定の単位を強制しません。すべての結果は単位変換ではなく乗算で求めるため、ミリメートル、インチ、そのほかの一貫した単位も使用できます。すべての元ページが指定寸法であることを前提としています。縦向き、横向き、独自サイズが混在する文書では、サイズ別に計画を計算するか、先にページを統一してください。両寸法は0より大きい有限数でなければならず、欠落、0、負数、無限大、数値以外は拒否されます。この厳密な検証により、使用不能な形状からもっともらしい用紙仕様が作られることを防ぎます。本機能はPDFのバイト列ではなくページ形状を受け取るため、自動処理では事前にMediaBoxの幅と高さを取得してください。
対応する面付けグリッドを選びます
nには2、4、6、9のいずれかを指定してください。各値は一定のグリッドに対応します。2ページは2列1行、4ページは2列2行、6ページは3列2行、9ページは3列3行です。この明示的な対応により、曖昧な並べ方を避け、繰り返し処理でも安定した結果を得られます。出力用紙の幅は元ページの幅に列数を掛けた値、高さは元ページの高さに行数を掛けた値です。各ページは原寸のまま保持され、拡大縮小、回転、余白、間隔、塗り足し、トンボは追加されません。これらの製作条件は、後から面付けツールやレンダリングツールで適用できます。対応範囲外の値は、丸めたり不完全なグリッドへ押し込んだりせず、エラーとして扱います。そのため、nが利用者設定、保存済みテンプレート、コマンドラインオプションから渡される場合でも、設定ミスを早期に確認できます。
配置計画を使って各用紙を作成します
placements配列は、0から始まるpage_index、row、columnにより、セルを行優先順で示します。最初の元ページは左上のセルに入り、以降は行内を右へ進み、最後の列の後で次の行へ移ります。各配置にはx座標とy座標、および変更されないセルの幅と高さが含まれます。座標原点は左上で、xは右方向、yは下方向に増加します。PDFライブラリが左下原点を採用している場合は、レンダリング時にsheet_heightからyとセル高を引いて変換してください。出力用紙ごとに次のnページを取り、同じ配置を順番に適用します。最終用紙のページ数が少ない場合は、印刷工程で埋め草が必要でない限り、未使用の配置を無視してください。結果には用紙全体と個別の矩形が含まれるため、PDF生成、印刷プレビュー、面付け確認、作業票生成を、グリッド計算の再実装なしで行えます。
活用例
面付けジョブを準備します
出力PDFを書き出す前に、対象用紙を作成し、決定的なグリッド座標で各ページを配置します。
必要な用紙寸法を見積もります
元文書を開いたり変更したりせず、対応するN-up配置に必要な原寸のキャンバスを計算します。
印刷ワークフロー設定を検証します
非対応の面付け数を早期に拒否し、予定したグリッドを印刷機や後加工の制約と比較します。
よくある質問
料金はいくらですか?
APIリクエスト1件の料金は$0.002です。ブラウザー内でも計算できます。
対応するN-up値は何ですか?
2、4、6、9に対応しています。それ以外の値では無効な入力エラーを返します。
どの測定単位を使えばよいですか?
page_widthとpage_heightで同じ単位を使う限り、任意の単位を指定できます。結果にもその単位が保たれます。
ページの拡大縮小や回転も行いますか?
いいえ。指定された幅と高さを保ち、回転、拡大縮小、余白、間隔なしの原寸グリッドを計算します。
PDFをアップロードまたは書き換えますか?
いいえ。寸法とnから形状だけを計算し、PDFのバイト列を読み取り、保存、描画、変更することはありません。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/pdf/n-up-layout \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"page_width":612,"page_height":792,"n":4}'const res = await fetch("https://api.kit.forhosting.com/pdf/n-up-layout", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"page_width": 612,
"page_height": 792,
"n": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/n-up-layout",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"page_width": 612,
"page_height": 792,
"n": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/n-up-layout", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"page_width":612,"page_height":792,"n":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"page_width":612,"page_height":792,"n":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/n-up-layout", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"page_width": 612,
"page_height": 792,
"n": 4
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.n_up_layout",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |