
PDF tooling for Go and the command line.
View the Project on GitHub pdfcpu/pdfcpu
Thank you for your interest in contributing to pdfcpu.
pdfcpu is an open-source PDF processor written in Go. The project is licensed under the Apache License, Version 2.0.
This document explains how contributions are handled and what is required before a contribution can be accepted.
The pdfcpu project is licensed under the Apache License, Version 2.0.
By contributing to pdfcpu, you agree that your contribution is submitted under the Apache License, Version 2.0, unless explicitly stated otherwise in writing and accepted by the project maintainers.
Contributions may be used, modified, distributed, sublicensed, and otherwise handled as permitted by the Apache License, Version 2.0.
pdfcpu uses a Contributor License Agreement process for pull requests.
Before a pull request can be accepted, the contributor must complete the CLA process as requested by the CLA Assistant check on GitHub. Pull requests may not be merged until the CLA Assistant check confirms that the required agreement has been completed.
By submitting a pull request and completing the CLA process, you confirm that you have the right to submit the contribution and to grant the rights described in the applicable CLA.
The CLA process is used to document the inbound rights needed by the project maintainers to review, modify, distribute, sublicense, and maintain contributions as part of the Apache-2.0 licensed project.
pdfcpu may also accept Signed-off-by lines in commits as an additional provenance signal, but the CLA Assistant check is the authoritative contribution gate for pull requests unless the maintainers state otherwise.
A sign-off line looks like this:
Signed-off-by: Your Name <your.email@example.com>
You can add this automatically when committing:
git commit -s
By submitting a contribution, you confirm that:
If you are unsure whether you have the right to contribute something, please do not submit it until the rights are clear.
Good contributions include:
Before starting larger changes, please open an issue or discussion first. This helps avoid duplicated work and makes it easier to align the contribution with the project direction.
Please do not report security vulnerabilities as public GitHub issues.
See the security policy for private reporting instructions and the coordinated disclosure process.
PDFs used for tests must be shareable.
Do not submit:
If a bug depends on a sensitive PDF, try to create a minimized synthetic test file that reproduces the issue without exposing private content.
pdfcpu is written in Go.
Please keep contributions consistent with the existing codebase:
gofmt;Before opening a pull request:
The maintainers may ask for changes before merging. Not every contribution can be accepted.
New dependencies should be avoided unless they are clearly justified.
Before adding a dependency, consider:
Do not add dependencies with GPL-only, AGPL-only, proprietary, unclear, or otherwise incompatible licensing.
AI-assisted contributions are not accepted.
Please do not submit pull requests, patches, generated code, documentation, tests, or issue comments that were created substantially by AI tools.
This policy is intended to keep reviews focused, reduce provenance uncertainty, and avoid additional maintainer workload.
Contributors are expected to understand and author the contributions they submit.
The maintainers decide whether a contribution is accepted.
A contribution may be declined if it:
For small issues, open a GitHub issue.
For larger design proposals, architectural changes, or contributions made on behalf of a company, please start with an issue or discussion before writing the implementation.