---
name: "pdf123-pdf-to-pdfa"
description: "Convert a PDF into an archival PDF/A or PDF/X format. Runs the PDF123 \"PDF To PDF/A\" 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: PDF 转 PDF/A, PDF a PDF/A, PDF से PDF/A, PDF إلى PDF/A, PDF para PDF/A, PDF ke PDF/A, PDF vers PDF/A, PDF в PDF/A, PDFからPDF/A, PDF in PDF/A, PDF를 PDF/A로, PDF sang PDF/A, PDF'den PDF/A'ya, PDF 轉 PDF/A, PDF เป็น PDF/A, PDF na PDF/A, PDF у PDF/A, PDF naar PDF/A, PDF till PDF/A, PDF σε PDF/A, PDF към PDF/A, PDF kuwa PDF/A."
compatibility: "Needs curl 7.76+ and outbound HTTPS to pdf123.xyz, or PDFX_API_BASE pointing at a self-hosted pdfx-server."
---

# PDF To PDF/A (PDF123)

Convert a PDF into an archival PDF/A or PDF/X format.

Web version: https://pdf123.xyz/pdf-to-pdfa · All tools: https://pdf123.xyz/skills/pdf123.md

## When to use

- Get a Ghostscript PDF/A-1 or PDF/A-2 rewrite as a starting point
- Re-save an office export before a checker you already run
- Avoid claiming PDF/X when you only needed a pdfwrite pass

## 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/convert/pdf/pdfa" \
  -F "fileInput=@input.pdf" \
  -F "outputFormat=pdfa" \
  --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) |
| `outputFormat` | choice | no | `pdfa` | Output format. One of: `pdfa` (PDF/A), `pdfa-1` (PDF/A-1), `pdfa-2` (PDF/A-2), `pdfa-2b` (PDF/A-2b), `pdfa-3` (PDF/A-3), `pdfa-3b` (PDF/A-3b), `pdfx` (PDF/X) |

## 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

- No PDF/A-3, no PDF/X, no veraPDF report
- Password-protected files need the password; API callers run Unlock first
- Not OCR; scans remain images
- 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`.
