# HTTP: status and headers per engine (curl -D -), then streaming vs buffered, then a failure after rendering # openjdk version "25.0.5" 2026-10-20 LTS | 2 vCPU | 8027 MB RAM --- GET /invoices/openpdf.pdf HTTP/1.1 200 Content-Disposition: attachment; filename="__-INV-2026-0042.pdf"; filename*=UTF-8''%E0%A4%AC%E0%A4%BF%E0%A4%B2-INV-2026-0042.pdf Content-Type: application/pdf Transfer-Encoding: chunked --- GET /invoices/itext.pdf HTTP/1.1 200 Content-Disposition: attachment; filename="__-INV-2026-0042.pdf"; filename*=UTF-8''%E0%A4%AC%E0%A4%BF%E0%A4%B2-INV-2026-0042.pdf Content-Type: application/pdf Transfer-Encoding: chunked --- GET /invoices/flyingsaucer.pdf HTTP/1.1 200 Content-Disposition: attachment; filename="__-INV-2026-0042.pdf"; filename*=UTF-8''%E0%A4%AC%E0%A4%BF%E0%A4%B2-INV-2026-0042.pdf Content-Type: application/pdf Transfer-Encoding: chunked --- GET /invoices/openpdf-jdk.pdf HTTP/1.1 200 Content-Disposition: attachment; filename="__-INV-2026-0042.pdf"; filename*=UTF-8''%E0%A4%AC%E0%A4%BF%E0%A4%B2-INV-2026-0042.pdf Content-Type: application/pdf Transfer-Encoding: chunked --- GET /invoices/openpdf-jdk-actualtext.pdf HTTP/1.1 200 Content-Disposition: attachment; filename="__-INV-2026-0042.pdf"; filename*=UTF-8''%E0%A4%AC%E0%A4%BF%E0%A4%B2-INV-2026-0042.pdf Content-Type: application/pdf Transfer-Encoding: chunked --- GET /invoices/flyingsaucer-shaped.pdf HTTP/1.1 200 Content-Disposition: attachment; filename="__-INV-2026-0042.pdf"; filename*=UTF-8''%E0%A4%AC%E0%A4%BF%E0%A4%B2-INV-2026-0042.pdf Content-Type: application/pdf Transfer-Encoding: chunked --- GET /invoices/openpdf.pdf?mode=buffered HTTP/1.1 200 Content-Length: 20039 --- GET /invoices/openpdf.pdf?disposition=inline HTTP/1.1 200 Content-Disposition: inline; filename="__-INV-2026-0042.pdf"; filename*=UTF-8''%E0%A4%AC%E0%A4%BF%E0%A4%B2-INV-2026-0042.pdf --- GET /invoices/nope.pdf HTTP/1.1 404 --- GET /invoices/openpdf.pdf?failAtEnd=true (streamed: headers are already gone when the failure happens) HTTP/1.1 200 Transfer-Encoding: chunked curl exit=18 bytes_received=20039 --- GET /invoices/openpdf.pdf?failAtEnd=true&mode=buffered (rendered into memory first) HTTP/1.1 500 curl exit=0 bytes_received=116