# CSV to PDF Table

Render CSV, TSV, semicolon, or pipe-delimited data as a formatted PDF table with headers, pagination, page size, orientation, font size, grid, and banding controls.

## Run it

- **CLI:** `gizza tool csv-to-pdf-table "name,age,team
Alice,30,East
Bob,25,West
Carol,28,East"`
- **Web:** https://gizza.ai/tools/csv-to-pdf-table/
- **Agents:** machine-readable descriptor (parameters JSON Schema) at https://gizza.ai/tools/csv-to-pdf-table/tool.json

## Inputs

- `data` — CSV or delimited table _(field)_
- `delimiter` — Delimiter _(field)_
- `header` — First row is a header _(field)_
- `title` — Optional PDF title _(field)_
- `page_size` — Page size _(field)_
- `orientation` — Orientation _(field)_
- `font_size` — Font size _(field)_
- `row_banding` — Shade alternate rows _(field)_
- `grid` — Draw cell grid _(field)_

## Output

- PDF data URL (text)

## Query parameters

Open the tool pre-filled and auto-run via URL:

- `data` — CSV or delimited table
- `delimiter` — Delimiter
- `header` — First row is a header
- `title` — Optional PDF title
- `page_size` — Page size
- `orientation` — Orientation
- `font_size` — Font size
- `row_banding` — Shade alternate rows
- `grid` — Draw cell grid

Example: `https://gizza.ai/tools/csv-to-pdf-table/?data=name%2Cage%2Cteam%0AAlice%2C30%2CEast%0ABob%2C25%2CWest%0ACarol%2C28%2CEast&delimiter=comma&header=true&title=Team%20roster&page_size=letter&orientation=portrait&font_size=10&row_banding=true&grid=true`

---

## CSV to PDF table

Turn a small or medium CSV-style table into a printable PDF without uploading the
data. Paste comma, tab, semicolon, or pipe-delimited rows, choose the page layout,
and download a PDF data URL that contains a formatted table.

The renderer repeats the header row on every page, sizes columns to the page,
right-aligns numeric columns, truncates very long cells with an ellipsis, and can
draw grid lines plus light row banding for readability.

### Worked example

Input:

```
name,age,team
Alice,30,East
Bob,25,West
Carol,28,East
```

With title `Team roster`, page size `letter`, orientation `portrait`, and font size
`10`, the output is a `data:application/pdf;base64,...` URL. Save or open that URL to
get a PDF headed “Team roster” with a bold `name / age / team` table header and one
row for each person.

### Limits & edge cases

- Input is parsed as delimited text with flexible row lengths; short rows get blank
  trailing cells so the table remains rectangular.
- Headers are optional. When enabled, the first row is bold and repeated on every
  page; when disabled, every row is treated as data.
- Fonts use built-in Helvetica/Helvetica-Bold. Latin-1 characters are preserved;
  characters outside Latin-1 are replaced with `?`.
- Columns shrink proportionally when the table is wider than the page, and long
  cell text is ellipsized rather than wrapped.
- Very large tables produce large PDFs; for huge datasets, sample or filter the CSV
  first.

### FAQ

<details>
<summary>Does this upload my spreadsheet or CSV?</summary>

No. The page runs the PDF writer locally in WebAssembly. The pasted rows are turned
into a PDF data URL in your browser.

</details>

<details>
<summary>Can I use tab-separated or pipe-separated data?</summary>

Yes. Set the delimiter control to tab, semicolon, or pipe. The parser uses that
same delimiter for every row before drawing the table.

</details>

<details>
<summary>What happens if my table has too many columns?</summary>

Columns are measured and then scaled down to fit the page. For wide data, switch to
landscape orientation, lower the font size, or remove columns before generating the
PDF.

</details>

<details>
<summary>Will the header appear after a page break?</summary>

Yes. If “first row is a header” is enabled, that row is drawn in bold at the top of
each page so multi-page tables stay readable.

</details>

## Related tools

- [CSV to table](https://gizza.ai/tools/csv-to-table/): Convert CSV data into a Markdown or HTML table, in your browser. Free, private, no upload.
- [Avro to JSON Converter](https://gizza.ai/tools/avro-to-json/): Decode Apache Avro Object Container Files (.avro / OCF) to JSON, NDJSON, or the embedded schema — no .avsc needed, free and private in your browser.
- [Bencode decoder](https://gizza.ai/tools/bencode-decoder/): Decode bencode (the BitTorrent / .torrent serialization format) into readable JSON, and re-encode JSON back into canonical bencode — in your browser. Nothing is uploaded.
- [CAMT.053 Statement Parser](https://gizza.ai/tools/camt053-parse/): Parse a camt.053 (or camt.052/054) ISO 20022 bank statement XML into JSON or CSV in your browser: balances, dates, counterparties, references. No upload.
- [CSV Cell Diff](https://gizza.ai/tools/csv-cell-diff/): Compare two CSVs column-by-column and highlight every individual cell that changed, plus added and removed rows and columns.
