---
name: "pdf123-split-by-sections"
description: "Divide each page into a grid of sections and split along it. Runs the PDF123 \"Split PDF by Sections\" tool (pdf123.xyz) over its REST API with curl, no account needed. Use when the user wants this done to their file. Also known as: 按网格拆分, Dividir PDF por cuadrícula, ग्रिड से बाँटें, تقسيم حسب الشبكة, Dividir PDF por grade, Pisah PDF menurut kisi, Diviser le PDF par grille, Разделить по сетке, グリッドで分割, Nach Raster teilen, 격자로 분할, Tách theo lưới, Izgara ile böl, 依網格分割, Dividi PDF a griglia, แยกตามตารางช่อง, Podziel na sekcje, Розрізати за сіткою, Splitsen op raster, Asingkan PDF mengikut kisi, Dela efter rutnät, Διαχωρισμός κατά πλέγμα, Разделяне по мрежа, Parteix per graella, Gawanya kwa gridi."
compatibility: "Needs curl 7.76+ and outbound HTTPS to pdf123.xyz, or PDFX_API_BASE pointing at a self-hosted pdfx-server."
---

# Split PDF by Sections (PDF123)

Divide each page into a grid of sections and split along it.

Web version: https://pdf123.xyz/split-by-sections · All tools: https://pdf123.xyz/skills/pdf123.md

## When to use

- Cut a 2-up scanned spread into two portrait pages
- Tile a poster-sized page into a grid for reading
- Ignore the merge control and expect one file

## Run it

Replace the sample file names and values with the user's, then run:

```bash
API="${PDFX_API_BASE:-https://pdf123.xyz}"
curl -sS --fail-with-body -X POST "$API/api/v1/general/split-pdf-by-sections" \
  -F "fileInput=@input.pdf" \
  -F "pageNumbers=SPLIT_ALL" \
  -F "horizontalDivisions=0" \
  -F "verticalDivisions=1" \
  --output-dir "pdf123-output/$(date +%Y%m%d-%H%M%S)" --create-dirs -OJ -w '%{filename_effective} %{content_type}\n'
```

## Inputs

Everything is `multipart/form-data`. The command above already sends each field with its default; keep them all and change only the values the user asked for, since some endpoints reject a missing optional field.

| Field | Type | Required | Default | Notes |
| --- | --- | --- | --- | --- |
| `fileInput` | file | yes | | .pdf (one file) |
| `pageNumbers` | text | no | `SPLIT_ALL` | Pages to extract. 1-based page list: `1,3-5`, open range `7-`, `all`, or an `n` expression such as `2n` for even pages |
| `horizontalDivisions` | text | no | `0` | Horizontal divisions |
| `verticalDivisions` | text | no | `1` | Vertical divisions |

## Result

curl saves the result in a new `pdf123-output/<timestamp>/` directory under the server's file name and prints its path and content type. Several output files come back as one ZIP. Tell the user where the file is.

## Limits

- Single PDF output only
- No splitMode filter
- Not chapter or OCR split
- At most 5000 tiles (pages × rows × columns); larger jobs are rejected
- Upload limit on this website: 500 MB per file, sent in chunks above about 95 MB. A single direct API request body is capped at 100 MB.

## Errors

- A non-zero curl exit means the request failed. The saved file then holds `application/problem+json`; read it and report its `detail` to the user instead of retrying blindly.
- `413`: the upload exceeds 100 MiB. `429`: wait for `Retry-After` seconds, then retry once.
- Send `X-API-KEY: $PDFX_API_KEY` only if the user has a PDF123 API key; anonymous calls work without it.

## Privacy

Files are uploaded to the API host, processed, and deleted once the response is sent. For confidential files, ask before uploading, or use a self-hosted server via `PDFX_API_BASE`.
