Comparison
A Java and .NET alternative to iText
iText is a well-established PDF library for Java and .NET. It provides deep control over PDF internals: forms, digital signatures, encryption, and low-level document structure. It also requires a commercial license for any closed-source or SaaS use, and its primary API is a drawing model rather than HTML rendering. PDFPipe is an HTTP call that renders real HTML with a browser and returns a PDF, with predictable per-document pricing and no license negotiation.
iText versus a dedicated PDF API
| PDFPipe | iText | |
|---|---|---|
| Template format | HTML + CSS | Java/C# drawing API |
| Renders HTML | Yes, full browser engine | Via iText pdfHTML add-on only |
| License | No per-seat license | Commercial license required for SaaS/closed-source |
| CSS support | Complete | Partial (pdfHTML add-on) |
| JavaScript | Runs before capture | Not supported |
| Web fonts | Any URL, loaded automatically | Must embed manually |
| Pricing model | Per document (flat) | Per developer seat or enterprise deal |
| Languages | Any (HTTP call) | Java, .NET |
The licensing problem
iText 7 is dual-licensed: AGPL for open-source projects and a commercial license for everything else. Any SaaS product, closed-source application, or company that does not want to open-source its code needs a commercial agreement. License costs are negotiated per seat or per project and are not publicly listed. PDFPipe charges per document rendered. The first 100 documents a month are free; paid plans start at $19. No negotiations, no per-developer fees.
HTML rendering in iText
iText does offer an HTML-to-PDF path through the pdfHTML add-on, but it is a separate module with its own license, its CSS support is partial, and JavaScript is not executed. It is a layout engine that reads HTML, not a browser renderer. PDFPipe uses an actual browser: the same rendering engine behind billions of web pages, with full CSS support and JavaScript execution.
Spring Boot example
// Spring Boot controller: no iText dependency required.
import org.springframework.http.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
@RestController
public class PdfController {
private final RestTemplate rest = new RestTemplate();
@GetMapping(value = "/invoices/{id}.pdf", produces = "application/pdf")
public ResponseEntity<byte[]> invoice(@PathVariable String id) {
String html = buildInvoiceHtml(id); // your template method
HttpHeaders headers = new HttpHeaders();
headers.setBearerAuth(System.getenv("PDFPIPE_API_KEY"));
headers.setContentType(MediaType.APPLICATION_JSON);
var body = Map.of(
"html", html,
"options", Map.of("format", "A4")
);
ResponseEntity<byte[]> resp = rest.exchange(
"https://api.pdfpipe.xyz/v1/pdf",
HttpMethod.POST,
new HttpEntity<>(body, headers),
byte[].class
);
return ResponseEntity.ok()
.contentType(MediaType.APPLICATION_PDF)
.header("Content-Disposition", "attachment; filename=invoice-" + id + ".pdf")
.body(resp.getBody());
}
}When to keep iText
iText is the right tool when you need low-level PDF operations that go beyond rendering: filling AcroForms, applying digital signatures, encrypting existing PDFs, or merging and splitting documents. For generating PDFs from HTML templates, a browser-based render API produces better output with far less code and no license cost.
Full Java and Spring Boot examples on the Java guide and Spring Boot guide.
See pricing →Competitor pricing and features on this page were last reviewed on 21 September 2026. Vendors change their plans, so check their own pricing page before deciding. If something here is out of date, tell us and we will correct it.