# Sejda is a task oriented PDF library, which is a different thing from a PDF toolkit

> Sejda SDK is a Java library that models PDF work as discrete tasks, split, merge, rotate, extract pages, each implemented on top of the SAMBox fork of PDFBox that the same maintainers control. It suits a developer who wants to script PDF operations rather than assemble them from primitives, and its AGPL-3.0 licence since version 2.x is the first thing to read.

**torakiki/sejda** — An extendible and configurable PDF manipulation layer library written in java.

- Repository: https://github.com/torakiki/sejda
- Website: http://www.sejda.org
- Stars: 548 · Forks: 70
- Language: Java
- License: AGPL-3.0
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/torakiki-sejda

## Tasks, not primitives, is the whole design idea

Sejda SDK is a task oriented PDF editor SDK library written in Java. That phrase is the design in miniature, and it separates Sejda from most of the Java PDF world.

The usual approach to programmatic PDF work in Java is to take a document model and call primitives yourself: create a page, add content streams, set resources, write the file, then hope the result opens. The primitive-level route gives you control and it gives you responsibility for every low level detail.

Sejda instead ships a set of ready to go manipulations, each one a task with its own inputs and outputs. The project's wiki lists the full set of available tasks, and the hosted web interface at sejda.com shows what that list amounts to in practice: split PDF by pages, merge PDF, split PDF by chapters, split PDF by size, alternate or mix PDF, extract pages from PDF, apply a header, footer or page numbers to PDF pages, rotate PDF pages, and PDF to JPG images.

That last list is more informative than it looks, because it is the set of operations people actually want from a PDF tool and the set that a service layer can expose as endpoints.

The task orientation also gives the library a natural error surface. A split that hits a corrupt page fails in a defined way at the task boundary, rather than producing a subtly malformed output file that only shows up when someone opens it.

## SAMBox, a PDFBox fork the maintainers control

Sejda SDK offers its manipulations implemented using SAMBox, a PDFBox fork that the project maintains. The README links to the fork's own repository, and the repository tree here includes a sejda-sambox/ directory alongside sejda-core/, sejda-model/, sejda-conversion/, sejda-image-writers/, sejda-fonts/, sejda-distribution/, sejda-docs/ and sejda-tests/.

Maintaining a fork of PDFBox is a heavier commitment than it first appears, and it is worth understanding why the project made it. PDFBox is the dominant Java PDF library, but the version published upstream does not always expose what a task oriented layer needs, and the usual options for a team are to wait for upstream, to patch around it, or to fork. Forking means the fixes stay under the project's control, at the cost of maintaining a merge with upstream.

The module layout tells you how the library is decomposed. sejda-model/ is the document model, sejda-core/ holds the tasks, sejda-conversion/ handles conversion, sejda-image-writers/ handles image output, and sejda-fonts/ deals with fonts. sejda-tests/ holds the test suite and sejda-docs/ the documentation, and sejda-distribution/ is where the packaged artifact is assembled.

The build is Maven, with a pom.xml at the root and a .mvn/ directory, and there is a deps.txt and a pgp.asc.enc at the root for dependency tracking and release signing. The badge in the README points at a maven.yml workflow, so the build runs in continuous integration.

## Three products, one engine, and the open source boundary runs through them

The README describes three related things, and the relationship between them is what you need to understand before choosing a licence.

Sejda SDK open source is an open source Java library providing a set of PDF manipulation tasks. Sejda SDK PRO is a commercial Java library built on top of the open source library and providing additional PDF manipulation tasks. Sejda console PRO is a commercial command line tool, sejda-console-pro, that can be used directly from the terminal or from your own code.

So there is a clear layering: the open source library is the base, the commercial library adds tasks on top of it, and the commercial console tool is a separate deliverable that can be driven from a script or embedded.

That layering has a practical consequence for evaluation. If you need a task that only exists in PRO, the open source library will not get you there, and the alternative is to implement the task yourself on the open source base. The task list in the wiki is therefore the thing to read first, because it tells you which operations are available without a commercial dependency.

The project also runs a web interface at sejda.com exposing the most commonly used tasks as online services, which is a reasonable way to test what a task does before writing Java against it. And the same engine is behind PDFsam Basic, the free and open source desktop application for splitting, merging, extracting pages, rotating and mixing PDF files, which is a useful reference point for what the library is capable of when someone has driven it through a full desktop application.

## The licence changed at version 2, and that decides your options

The licence section is short and it is the most consequential part of the README.

Sejda 1.x is licensed under Apache License, Version 2.0. Sejda 2.x and higher are licensed under GNU Affero Public License 3.0.

The change from Apache 2 to AGPL-3.0 is not a detail. Apache 2 is permissive: you can use the library in a closed product with no obligation beyond keeping the notice. AGPL-3.0 is copyleft with a network clause, and for a server-side library that clause matters, because it extends the source-offer obligation to use over a network.

A PDF manipulation library is exactly the kind of component that ends up inside a web application, either as a document processing service or as part of a larger platform. Under AGPL-3.0, offering the functionality of the modified library to users over a network is the situation the licence addresses, and whether your particular arrangement triggers it depends on how the library is used and modified, which is a question for whoever handles your legal review rather than for a code review.

The repository also carries a LICENSE file and a CONTRIBUTING.md, and the badge in the README links to the GNU AGPL text. The homepage is sejda.org, and the quick start documentation lives in the project wiki.

For context on the codebase's age, the listed releases are v4.2.5 from 2021-05-10, v4.2.4 from 2021-04-20 and v4.2.3 from 2021-04-19. The repository itself is not archived and the last push was on 2026-10-17, so the code is being touched even though the published tags in this listing are from 2021.

## Where the task model pays off, and where it stops

The task model is genuinely good in one direction: repeated, well-defined operations on existing PDFs. Splitting a document by a page range, merging a set of files in order, rotating a subset of pages, extracting a page range, stamping a footer across pages. Each of those has awkward details around page trees, inherited attributes and resource handling, and a task library absorbs that once so you do not re-solve it.

The task model stops helping in a different direction: anything where you need to author content rather than rearrange it. The hosted services and PDFsam Basic are about rearranging, and the PRO library adds tasks, which is still rearrangement. If your requirement is generating a PDF with a specific layout, embedding fonts you have licensed, or producing accessible tagged output to a specification, this is not the layer where that work lives.

There is a second limit worth naming. The library's own documentation is in the wiki rather than in the repository, and the README points at a getting started page and a task list, so the API detail lives in GitHub wiki pages rather than in something versioned with the code. That is workable, and it is also a maintenance risk that a self-hosted Javadoc set would not carry.

The alternative approach is to use PDFBox directly. The difference in approach is that PDFBox gives you the document model and primitives and leaves every operation to you, while Sejda gives you the operations and hides the model. For the rearranging work, the second is faster to write and easier to reason about. For anything where you need the model itself, the first is the better foundation, and Sejda's own choice to maintain a PDFBox fork is a reminder that the model layer still matters.

## Conclusion

Sejda fits a Java developer who needs repeatable PDF operations, in a service or a batch job, and who would rather call a split or a merge than assemble document handling from low level primitives. It does not fit a closed-source product that cannot carry AGPL-3.0 obligations, and it does not fit a team that needs a wide catalogue of formats beyond the PDF work the task list covers. Read the task list in the project wiki before you write anything, and check the version you depend on, since the listed releases stop at v4.2.5 from 2021 while the repository itself was pushed to on 2026-10-17.

## FAQ

### What is Sejda SDK?

Sejda SDK is a task oriented PDF editor SDK library written in Java. It offers a set of ready to go PDF manipulations, such as splitting, merging, rotating and extracting pages, implemented on top of SAMBox, a PDFBox fork the project maintains.

### What is the difference between Sejda SDK open source and Sejda SDK PRO?

Sejda SDK open source is the open source Java library providing a set of PDF manipulation tasks. Sejda SDK PRO is a commercial library built on top of it that adds further manipulation tasks, and sejda-console-pro is a separate commercial command line tool for those extra tasks.

### What licence is Sejda under?

Sejda 1.x is licensed under Apache License Version 2.0, while Sejda 2.x and higher are licensed under GNU Affero Public License 3.0. The LICENSE file and the AGPL badge are in the repository.

### Which PDF tasks does Sejda support?

The hosted web interface at sejda.com exposes the commonly used ones: split by pages, merge, split by chapters, split by size, alternate or mix, extract pages, apply a header, footer or page numbers, rotate pages, and convert to JPG images. The complete list is in the project wiki.

### What is SAMBox and why does Sejda use it?

SAMBox is a PDFBox fork that the Sejda maintainers control, and Sejda SDK implements its manipulations using it. A sejda-sambox/ module sits in the repository alongside sejda-core/, sejda-model/, sejda-conversion/, sejda-image-writers/ and sejda-fonts/.

## Sources

- [License: AGPL-3.0](https://github.com/torakiki/sejda/blob/master/LICENSE)
- [Project website](http://www.sejda.org)
- [README](https://github.com/torakiki/sejda/blob/master/README.md)
- [Releases](https://github.com/torakiki/sejda/releases)
- [torakiki/sejda on GitHub](https://github.com/torakiki/sejda)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/torakiki-sejda
