レスポンスフォーマットとコンテンツネゴシエーション
アクションから返ってくるもの、そして `Accept` ヘッダーが PDF、ZIP、JSON エンベロープ、multipart/mixed のどれを選ぶかについて説明します。
ほとんどのアクションは単一の application/pdf ドキュメントを返します。4つの分割アクションは一度に複数のドキュメントを返し、その梱包方法を Accept リクエストヘッダーで選びます。このページは、そのコンテンツネゴシエーションのリファレンスです。梱包オプション、JSON エンベロープのスキーマ、そして Accept ヘッダーが何にも一致しない場合に何が起きるかを説明します。
単一ドキュメントのレスポンス
分割ではないすべてのアクションは 200 OK で応答し、処理済みの PDF を生の本文として返します。
HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Length: 48213ネゴシエーションの余地はありません。各アクションページの例のように、本文をファイルへストリーミングしてください。
複数ドキュメントのレスポンス
分割系のアクションは、1回の呼び出しから複数のドキュメントを返します。ページ数で分割する、指定したページで分割する、ファイルサイズで分割する、ページグループで分割する です。出力ドキュメントは、順番に 00001.pdf、00002.pdf のように名付けられます。梱包方法は Accept リクエストヘッダーで選びます。
Accept ヘッダー |
レスポンス |
|---|---|
| (送信なし) | application/zip(デフォルト) |
application/zip |
出力 PDF の ZIP アーカイブ |
application/json |
base64 エンコードされたドキュメントの JSON エンベロープ |
multipart/mixed |
ドキュメントごとに1パート |
| それ以外 | 406 Not Acceptable |
application/zip:デフォルト
Accept ヘッダーを送らない場合(または Accept: application/zip を送った場合)、レスポンスは 00001.pdf、00002.pdf のように名付けられたエントリを持つ ZIP アーカイブになります。
curl https://api.pdfblocks.com/v1/split_by_page_count \
-H 'X-API-Key: your_api_key' \
-F file=@input.pdf \
-F page_count=10 \
-o parts.zipparts.zip を展開すると、個々のドキュメントが得られます。
application/json:base64 エンベロープ
Accept: application/json をリクエストすると、すべてのドキュメントが1つの JSON レスポンスにインラインで含まれます。パートをメモリに保持したい場合や、ファイルシステムに触れずに転送したい場合に便利です。
curl https://api.pdfblocks.com/v1/split_by_page_count \
-H 'X-API-Key: your_api_key' \
-H 'Accept: application/json' \
-F file=@input.pdf \
-F page_count=10 \
-o parts.json本文は documents 配列で、各エントリが名前と base64 エンコードされたバイト列を持ちます。
{
"documents": [
{
"name": "00001.pdf",
"content": "JVBERi0xLjcKJeLjz9MK... (base64)",
"content_type": "application/pdf"
},
{
"name": "00002.pdf",
"content": "JVBERi0xLjcKJeLjz9MK... (base64)",
"content_type": "application/pdf"
}
]
}documentsarrayrequired出力 PDF ドキュメント(順序どおり)。
documents[].namestringrequiredドキュメント名:00001.pdf、00002.pdf など。
documents[].contentstring (base64)requiredbase64 エンコードされた PDF ドキュメント。デコードすると生の PDF バイト列が復元されます。
documents[].content_typestringrequiredドキュメントのメディアタイプ:application/pdf。
multipart/mixed:ドキュメントごとに1パート
Accept: multipart/mixed をリクエストすると、出力 PDF ごとに1パートを持つ multipart 本文として、ドキュメントが順番にストリーミングされます。各パートの Content-Type は application/pdf で、Content-Disposition には 00001.pdf、00002.pdf のように名前が付けられます。
curl https://api.pdfblocks.com/v1/split_by_page_count \
-H 'X-API-Key: your_api_key' \
-H 'Accept: multipart/mixed' \
-F file=@input.pdf \
-F page_count=10 \
-o parts.multipart一致しない Accept は 406 を返す
上記の3つの形式のどれにも一致しない Accept ヘッダーを送った場合(例えば分割アクションに対して Accept: application/pdf を送った場合)、API は 406 Not Acceptable と application/problem+json 本文で応答します。Accept を省略してデフォルトの ZIP を使うか、サポートされているメディアタイプのいずれかをリクエストしてください。problem details の形については エラー を参照してください。
分割アクションを呼び出し、各フォーマット(ZIP の展開、JSON エンベロープのデコード、multipart パートの読み取り)を処理するエンドツーエンドのコードについては、PDF を分割して出力を扱う ガイドを参照してください。