Sales pipeline, 5 columns
- Input
- sample.csv, 226 bytes: company, stage, arr, owner, close_date with four rows.
- Output
- 11,305-byte one-page Letter PDF in 72 ms; a centred table with a header rule and the numbers readable but not decimal-aligned.
CSV → PDF typesets the rows as a proper table with repeating header, switching to landscape for wide files, instead of printing a spreadsheet grid.
From real runs
| Element | Result | What happens |
|---|---|---|
| Rows and columns | Kept | The 4-row, 5-column sample became a five-column table with all four rows; a 15-row, 12-column file kept every cell across two pages. |
| Header row | Kept | The first CSV line is set as the table header with a rule beneath it and is repeated at the top of every continuation page. |
| Page orientation | Changed | Files with 7 or more columns are typeset landscape at 9 pt; the 12-column test fitted cleanly, while the same table in portrait overlapped its column labels. |
| Number alignment | Changed | Cells are centred, including numbers, because the table carries no column types; sums do not line up on the decimal point. |
| Fonts | Changed | Text is set in Libertinus Serif and embedded in the PDF; the CSV has no fonts of its own. |
| Quoting and delimiters | Kept | Quoted commas and semicolon or tab delimiters are parsed by our table engine before typesetting, so cell boundaries follow the data, not the punctuation. |
| Page footer | Changed | Each page gets a centred page number; there is no title, date or file name unless the CSV contains them. |
The 4-row, 5-column sample became a five-column table with all four rows; a 15-row, 12-column file kept every cell across two pages.
The first CSV line is set as the table header with a rule beneath it and is repeated at the top of every continuation page.
Files with 7 or more columns are typeset landscape at 9 pt; the 12-column test fitted cleanly, while the same table in portrait overlapped its column labels.
Cells are centred, including numbers, because the table carries no column types; sums do not line up on the decimal point.
Text is set in Libertinus Serif and embedded in the PDF; the CSV has no fonts of its own.
Quoted commas and semicolon or tab delimiters are parsed by our table engine before typesetting, so cell boundaries follow the data, not the punctuation.
Each page gets a centred page number; there is no title, date or file name unless the CSV contains them.
We converted our CSV sample (226 B) with Table engine → Document engine → PDF renderer on 2026-09-11. It took 89 ms and produced a 11 KB PDF file, 50× larger than the input. The engine raised no warnings.
Input · sample.csv · 226 B
4 data rows × 5 columns; header: company,stage,arr,owner,close_date
Output · sample.pdf · 11 KB
PDF 1.7, 1 page, selectable text (LibertinusSerif-Regular-Identity-H, LibertinusSerif-Regular), 0 image objects
pandas and Typst
import pandas as pd
df = pd.read_csv("in.csv")
open("in.md", "w").write(df.to_markdown(index=False))
# then: pandoc in.md --pdf-engine=typst -V "header-includes=#set page(flipped: true)" -o out.pdfWrap the table so it can break across pages; a table inside an unbreakable figure jumps to a new page and overflows.
LibreOffice
soffice --headless --convert-to pdf in.csv --outdir outPrints the sheet grid with default column widths, clipping long text and splitting columns across pages.
The HTTP API and the MCP server run the exact engine this page uses (Table engine → Document engine → PDF renderer); the response carries the same warnings the web converter shows. Check support first with GET /api/v1/pairs?from=csv&to=pdf.
curl -X POST https://filetypeconverters.com/api/v1/convert \
-H "Authorization: Bearer $FTC_API_KEY" \
-F "file=@input.csv" -F "from=csv" -F "to=pdf" \
--output output.pdfSeven or more columns switch the page to landscape at 9 pt automatically; a 12-column, 15-row file fitted on two pages with the header repeated. Override with landscape and fontSize when the guess is wrong.
The table is typeset from a Markdown table that carries no column types, so every cell is centred. Right-aligned numbers need XLSX → PDF, where the spreadsheet knows which columns are numeric.
Detection handles commas, semicolons, tabs and pipes. If the result is one column per row, pass delimiter explicitly and run it again.