signaturepdf is a free, open source document management & e-signatures project written in JavaScript and released under AGPL-3.0. It has 831 GitHub stars, 108 forks and 69 open issues, and was last pushed 10 days ago. On this registry it ranks #14 of 18 tracked projects in Document Management & E-Signatures, with 5 head-to-head comparisons available.

What is signaturepdf?

Signature PDF is a free, open-source web application under the AGPL-3.0 licence that lets people sign a PDF alone or together with others while also organizing pages, editing metadata, and compressing the file, and it is aimed at individuals, associations, cooperatives, and hosting providers who would rather run document signing on infrastructure they control than hand documents to a third-party service.

What it is

Signature PDF is a JavaScript web application distributed under the AGPL V3 licence, with 831 stars and 108 forks on GitHub and a public instance at its homepage, https://pdf.24eme.fr. It lives in the self-hosted free-software ecosystem: it can be installed on Debian/Ubuntu, on Linux Alpine, as a package, or through the Docker image xgaia/signaturepdf, and it is also packaged for YunoHost. Configuration is handled through a config/config.ini file created from config/config.ini.example.

The concrete problem it solves is that preparing and signing a PDF normally spreads across several unrelated tools — a desktop page organizer, a metadata editor, a compression utility, and some separate signing step. Signature PDF folds all of that into one browser-accessible service: users merge, sort, rotate, delete, and extract pages, edit metadata, compress a document, and sign it, either alone or with several co-signers in multi-signature mode. It replaces that fragmented toolchain rather than a single named product.

Key capabilities

  • Sign a PDF alone or with others; multi-signature mode lets several people sign one document, and it requires the PDFs to be stored on the server.
  • Organize pages inside a document: merge, sort, rotate, delete, and extract pages, matching the pdf-merge, pdf-merger, and pdf-extraction topics.
  • Edit PDF metadata, covered by the pdf-meta-editor and pdf-metadata topics, with configurable default fields for metadata editing.
  • Compress PDFs, matching the pdf-compression and pdf-compressor topics.
  • Optionally store uploaded PDFs encrypted on the server with a symmetric key known only to the signers, using gpg.
  • Configure behaviour per instance: disable the organize mode, set a custom retention period for shared PDFs, customize the CSS, and hide or modify the demo PDF link.
  • Translate the interface through Weblate, under the hosted.weblate.org project signature-pdf.

Who uses it and how

  • Public instances serve users who do not self-host, including pdf.24eme.fr by 24eme, framapdf.org by Framasoft, signature.pdf.hostux.net by Hostux, and pdf.ouvaton.coop by the OUVATON cooperative.
  • Associations, cooperatives, and small hosting providers run their own instance for their own users, including Les Ceméa (pdf.cemea.org), Ti Nuage, Sequanux, Deblan, Linux07, Spirio.fr, Liber-IT, Blabla Linux, Nebulae, caph.info, and s2s.
  • YunoHost administrators install it as an application from apps.yunohost.org, which gives a managed deployment without hand-written server configuration.
  • Docker users pull xgaia/signaturepdf and enable multi-signature mode by setting the PDF_STORAGE_PATH variable in config/config.ini and granting the web server write access to that folder.
  • Contributors and new hosters join through an issue or a pull request to add an instance to the published list.

Getting started

Install from source on Debian/Ubuntu or Linux Alpine, as a package, or deploy with the xgaia/signaturepdf Docker image; the installation guide covers each route. For multi-signature, copy config/config.ini.example to config/config.ini, set PDF_STORAGE_PATH to a writable folder, and install gpg if PDFs should be stored encrypted.

How it compares

The facts provided name no paid products that this project replaces, and they name no comparable tools either, so Signature PDF stands alone as the entry for PDF signing and manipulation in this registry. Any assessment of it against other signing software would have to rest on facts that are not available here.

When to use it — and when not to

Anyone enabling multi-signature mode must operate a database-free but stateful service in practice: a writable PDF_STORAGE_PATH folder on the server, a web server with the right ownership such as www-data, and optionally gpg for encrypted-at-rest storage, plus a decision about the retention period for shared PDFs. Otherwise the multi-signature option can be left off and the signing, organizing, metadata, and compression features still work. Anyone who is unwilling to store other people's signed documents on their own infrastructure, or who wants a fully managed service rather than an instance to run, should look elsewhere, and the 69 open issues suggest an active but not finished backlog.

project readme (upstream, from github) — read inline

License: AGPL v3 État de la traduction Docker Pull Install Signaturepdf with YunoHost

Signature PDF

Logo signature PDF

Free web software for signing (alone or with others), organizing (merge, sort, rotate, delete, extract pages, ...), editing metadatas or compressing PDFs.

Instances

List of instances where you can use this software:

Feel free to add yours through an issue or a pull request.

License

Open-source software under the AGPL V3 license.

Table of Contents

Installation

Configuration

Enabling and Configuring Multi-Signature Mode

This mode allows multiple people to sign a PDF, but it requires that the PDFs be stored on the server.

It is not mandatory to enable this mode for the application to work; it is an option.

Create the config/config.ini file

cp config/config.ini{.example,}

In the config/config.ini file, configure the PDF_STORAGE_PATH variable with the path where uploaded PDF files can be stored:

PDF_STORAGE_PATH=/path/to/folder

Create this folder:

mkdir /path/to/folder

The web server should have write permissions on this folder.

For example, for Apache:

chown www-data /path/to/folder/to/store/pdf

You can enable PDFs to be stored encrypted on the server with a symmetric key known only to the signers.

To activate it, gpg needs to be installed and option PDF_STORAGE_ENCRYPTION must be set to true.

In the config/config.ini file :

PDF_STORAGE_ENCRYPTION=true

Enabling digital signature

The digital signature depends on pdfsig from the poppler project (poppler-utils debian package) and certutil from libnss3 project (libnss3-tools debian package).

On debian :

sudo apt-get install poppler-utils libnss3-tools

To enable digital signature, create certificates in a NSS database. The shell script create_nss_certs.sh in tools helps to do it :

 bash tools/create_nss_certs.sh NSS_DIRECORY/ MY_NSS_PASSWORD MY_CERT_NICK MY_SIGNATUREPDF_URL

Once created, set the following directives in the config/config.ini file.

NSS3_DIRECTORY=NSS_DIRECORY/
NSS3_PASSWORD="MY_NSS_PASSWORD"
NSS3_NICK="MY_CERT_NICK"

You must then set the rights on the nss folder and its contents so that the web server has read access to it.

For example with apache on debian :

chown www-data:www-data -R NSS_DIRECORY

Disabling the Organize Mode

To disable the Organize mode, add DISABLE_ORGANIZATION=true to the config/config.ini file.

Hiding or Modifying the Demo PDF Link

To hide the demo PDF link, add PDF_DEMO_LINK=false to the config/config.ini file.

Customize the CSS

It's possible to add a custom CSS file to the location public/css/app-specific.css.

If this file exists, it will be loaded automatically.

Custom retention period for shared PDF

In config/config.ini file activate these options :

[signature]

; Enable custom retention period for shared PDF
; This override the default retention periods
; Warning: Text on the right of the colon will be translated according to the .po files
;retention[+1 year]="for one year"
;retention[+6 months]="for six months"
;retention[+1 month]="for one month"
;retention[+1 week]="for one week"
;retention[+1 day]="for one day"
;retention[+1 hour]="for one hour"

retention[+10 days]="for ten days"

This configuration allows the retention of the PDF for only 10 days

Default Fields for Metadata Editing

In the config/config.ini file, you can add as many fields as you want with the HTML input type (text, date, number, email, etc.) that will be preloaded for each PDF.

METADATA_DEFAULT_FIELDS[field1].type = "text"
METADATA_DEFAULT_FIELDS[field2].type = "text"
METADATA_DEFAULT_FIELDS[field3].type = "date"
METADATA_DEFAULT_FIELDS[field4].type = "number"

Update

The latest stable version is on the master branch. To update, simply fetch the latest changes:

git pull -r

Tests

To run functional tests:

make test

The tests are performed using puppeteer and jest.

To run the tests and view the browser (in debug mode):

DEBUG=1 make test

Libraries Used

For testing:

Contributions

Translation

To update the translation, simply execute make that will update the .pot file, which will merge the .po files which then will allow to create updated .mo files.

[État de la traduction](https://hosted

readme truncated — read the full docs on github

Frequently asked questions

Is signaturepdf free to use?

signaturepdf is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does signaturepdf do?

Free open-source web software for signing PDF (alone or with others) and also organize pages, edit metadata and compress pdf

What is signaturepdf written in?

signaturepdf is primarily written in JavaScript. Its source is publicly available at https://github.com/24eme/signaturepdf, and it has 831 GitHub stars.