2023-10-02 12:27:58 +02:00
[![License: AGPL v3 ](https://img.shields.io/badge/License-AGPL%20v3-blue.svg )](https://www.gnu.org/licenses/agpl-3.0) [![État de la traduction ](https://hosted.weblate.org/widget/signature-pdf/application/svg-badge.svg )](https://hosted.weblate.org/engage/signature-pdf/)
# PDF Signature
2021-05-04 00:50:11 +02:00
2023-10-02 12:27:58 +02:00
Free web software for signing, organizing, editing metadatas or compressing PDFs.
2023-09-14 17:29:33 +02:00
2021-10-07 12:40:00 +02:00
## Instances
2023-09-21 16:33:27 +02:00
List of instances where you can use this software:
2021-10-07 12:40:00 +02:00
- [pdf.24eme.fr ](https://pdf.24eme.fr )
2022-01-28 18:24:01 +01:00
- [pdf.libreon.fr ](https://pdf.libreon.fr )
2022-10-07 11:29:37 +02:00
- [pdf.hostux.net ](https://pdf.hostux.net )
2022-10-07 13:27:57 +02:00
- [pdf.nebulae.co ](https://pdf.nebulae.co )
2023-09-29 15:17:33 +02:00
- [pdf.kaosx.cf ](https://pdf.kaosx.cf )
2023-11-11 15:18:33 +01:00
- [pdf.ti-nuage.fr ](https://pdf.ti-nuage.fr )
2023-11-23 15:57:35 +01:00
- [pdf.cemea.org ](https://pdf.cemea.org )
2023-12-11 17:54:33 +01:00
- [pdf.spirio.fr ](https://pdf.spirio.fr )
2021-10-07 12:40:00 +02:00
2023-09-21 16:33:27 +02:00
_Feel free to add yours through an issue or a pull request._
2022-10-07 14:05:07 +02:00
2021-05-04 00:50:11 +02:00
## License
2023-09-21 16:33:27 +02:00
Open-source software under the AGPL V3 license.
2021-05-04 00:50:11 +02:00
2023-10-02 12:27:58 +02:00
## Table of Contents
- [Installation ](#installation )
- [Configuration ](#configuration )
- [Enabling and Configuring Multi-Signature Mode ](#enabling-and-configuring-multi-signature-mode )
- [Disabling the Organize Mode ](#disabling-the-organize-mode )
- [Hiding or Modifying the Demo PDF Link ](#hiding-or-modifying-the-demo-pdf-link )
- [Default Fields for Metadata Editing ](#default-fields-for-metadata-editing )
- [Update ](#update )
- [Tests ](#tests )
- [Libraries Used ](#libraries-used )
- [Contributions ](#contributions )
- [Translation ](#translation )
- [Contributors ](#contributors )
- [Fundings ](#fundings )
2023-10-24 17:23:56 +02:00
- [Screenshots ](#screenshots )
2023-10-02 15:25:37 +02:00
- [Signature feature ](#signature-feature )
- [Organizing feature ](#organizing-feature )
- [Metadata feature ](#metadata-feature )
- [Compression feature ](#compression-feature )
2023-10-02 12:27:58 +02:00
2021-05-04 00:50:11 +02:00
## Installation
2023-09-28 15:32:25 +02:00
2023-10-02 11:43:13 +02:00
- [Debian/Ubuntu ](installation.md#debian )
- [Docker ](installation.md#docker )
- [Linux Alpine ](installation.md#alpine )
2023-09-28 15:32:25 +02:00
2022-07-18 21:14:57 +02:00
## Configuration
2022-04-14 10:56:48 +02:00
2023-09-21 16:33:27 +02:00
### Enabling and Configuring Multi-Signature Mode
2022-04-01 17:56:48 +02:00
2023-09-21 16:33:27 +02:00
This mode allows multiple people to sign a PDF, but it requires that the PDFs be stored on the server.
2022-04-01 17:56:48 +02:00
2023-09-21 16:33:27 +02:00
It is not mandatory to enable this mode for the application to work; it is an option.
2022-04-01 17:56:48 +02:00
2023-09-21 16:33:27 +02:00
Create the `config/config.ini` file
2022-04-01 17:56:48 +02:00
```
cp config/config.ini{.example,}
```
2023-09-21 16:33:27 +02:00
In the `config/config.ini` file, configure the `PDF_STORAGE_PATH` variable with the path where uploaded PDF files can be stored:
2023-04-21 12:32:55 +02:00
2022-04-01 17:56:48 +02:00
```
2022-04-01 18:07:20 +02:00
PDF_STORAGE_PATH=/path/to/folder
2022-04-01 17:56:48 +02:00
```
2023-09-21 16:33:27 +02:00
Create this folder:
2023-04-21 12:32:55 +02:00
2022-04-01 17:56:48 +02:00
```
2022-04-01 18:07:20 +02:00
mkdir /path/to/folder
2022-04-01 17:56:48 +02:00
```
2023-09-21 16:33:27 +02:00
The web server should have write permissions on this folder.
2022-04-01 17:56:48 +02:00
2023-09-21 16:33:27 +02:00
For example, for Apache:
2023-04-21 12:32:55 +02:00
2022-04-01 17:56:48 +02:00
```
chown www-data /path/to/folder/to/store/pdf
```
2023-09-21 16:33:27 +02:00
### Disabling the Organize Mode
2023-03-14 17:18:10 +01:00
2023-10-24 17:25:14 +02:00
To disable the Organize mode, add `DISABLE_ORGANIZATION=true` to the
2023-09-21 16:33:27 +02:00
`config/config.ini` file.
2023-03-14 17:18:10 +01:00
2023-09-21 16:33:27 +02:00
### Hiding or Modifying the Demo PDF Link
2023-03-18 00:54:26 +01:00
2023-10-24 17:25:14 +02:00
To hide the demo PDF link, add `PDF_DEMO_LINK=false` to the
2023-09-21 16:33:27 +02:00
`config/config.ini` file.
2023-03-18 00:54:26 +01:00
2023-09-21 16:33:27 +02:00
### Default Fields for Metadata Editing
2023-04-20 16:36:48 +02:00
2023-09-21 16:33:27 +02:00
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.
2023-04-20 16:36:48 +02:00
```
METADATA_DEFAULT_FIELDS[field1].type = "text"
METADATA_DEFAULT_FIELDS[field2].type = "text"
METADATA_DEFAULT_FIELDS[field3].type = "date"
METADATA_DEFAULT_FIELDS[field4].type = "number"
```
2023-09-21 16:33:27 +02:00
## Update
2022-01-28 18:24:01 +01:00
2023-09-21 16:33:27 +02:00
The latest stable version is on the `master` branch. To update, simply fetch the latest changes:
2022-01-28 18:24:01 +01:00
2022-07-18 21:14:57 +02:00
```
git pull -r
```
2022-01-28 18:24:01 +01:00
2021-11-26 00:34:14 +01:00
## Tests
2023-09-21 16:33:27 +02:00
To run functional tests:
2021-11-26 00:34:14 +01:00
```
make test
```
2023-09-21 16:33:27 +02:00
The tests are performed using `puppeteer` and `jest` .
2021-11-26 00:34:14 +01:00
2023-09-21 16:33:27 +02:00
To run the tests and view the browser (in debug mode):
2021-11-26 00:34:14 +01:00
```
DEBUG=1 make test
```
2021-11-26 00:22:21 +01:00
2023-09-21 16:33:27 +02:00
## Libraries Used
2021-05-04 00:50:11 +02:00
2023-09-21 16:33:27 +02:00
- **Fat-Free** PHP micro framework: https://github.com/bcosca/fatfree (GPLv3)
- **Bootstrap** HTML, CSS, and JavaScript framework: https://getbootstrap.com/ (MIT)
- **PDF.js** JavaScript library for rendering PDFs in an HTML canvas: https://github.com/mozilla/pdf.js (Apache-2.0)
- **Fabric.js** JavaScript library for manipulating an HTML canvas: https://github.com/fabricjs/fabric.js (MIT)
- **PDFtk** PDF manipulation tools (GPL)
- **librsvg** SVG manipulation tools: https://gitlab.gnome.org/GNOME/librsvg (LGPL-2+)
- **potrace** Bitmap to vector image conversion tools: http://potrace.sourceforge.net/ (GPLv2)
- **OpenType.js** Tools for converting text and its font into paths: https://github.com/opentypejs/opentype.js (MIT)
- **ImageMagick** Image manipulation toolset: https://imagemagick.org/ (Apache-2.0)
- **Caveat** Handwriting-style font: https://github.com/googlefonts/caveat (OFL-1.1)
- **PDF-LIB** JavaScript library for PDF manipulation used for writing metadata: https://pdf-lib.js.org/ (MIT)
2023-09-28 15:32:25 +02:00
- **Ghostscript** GPL Ghostscript is a software suite for processing PostScript and PDF file formats (GPLv3)
2021-10-24 01:47:23 +02:00
2023-09-21 16:33:27 +02:00
For testing:
2021-10-24 01:47:23 +02:00
2023-09-21 16:33:27 +02:00
- **Jest** JavaScript Testing Framework: https://jestjs.io/ (MIT)
- **Puppeteer** Node.js library for controlling a web browser: https://github.com/puppeteer/puppeteer (Apache-2.0)
2021-10-24 01:52:34 +02:00
2023-09-19 12:12:28 +02:00
## Contributions
2022-04-27 13:01:28 +02:00
2023-09-21 16:33:27 +02:00
### 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.
2022-04-27 13:01:28 +02:00
2023-10-02 12:27:58 +02:00
[![État de la traduction ](https://hosted.weblate.org/widget/signature-pdf/application/multi-green.svg )](https://hosted.weblate.org/engage/signature-pdf/)
2023-09-19 12:12:28 +02:00
2023-09-21 16:33:27 +02:00
### Contributors
2023-09-19 12:12:28 +02:00
2023-09-21 16:33:27 +02:00
These people are the authors of the code of this software :
2023-09-19 12:12:28 +02:00
Vincent LAURENT (24ème), Jean-Baptiste Le Metayer (24ème), Xavier Garnier (Logilab), Simon Chabot (Logilab), Tangui Morlier (24ème), Gabriel POMA (24ème), Tanguy Le Faucheur (24ème), Étienne Deparis, battosai30
2023-09-21 16:33:27 +02:00
### Fundings
2023-09-19 12:12:28 +02:00
2023-09-21 16:33:27 +02:00
- 1 365 € excl. taxes from the company Logilab for the development of the shared signature feature
- 1 950 € excl. taxes from the company Logilab for the development of the metadata editing feature
- 100 € excl. taxes donations from the company Spirkop
- 100 € excl. taxes donations from the company PDG IT
- 1 040 € excl. taxes from the foundation NLNet pour software internationalization
2023-09-19 12:12:28 +02:00
2023-09-21 16:33:27 +02:00
The development of the software was primarily done during the working hours of 24ème employees.
2023-10-02 15:25:37 +02:00
## Screenshots
### Signature feature
![image ](https://github.com/24eme/signaturepdf/assets/71143205/c3e8b8d2-3f94-45a3-a8fd-143077443337 )
![image ](https://github.com/24eme/signaturepdf/assets/71143205/4deeb6fb-caa9-4365-895e-d22177a6ec3b )
### Organizing feature
![image ](https://github.com/24eme/signaturepdf/assets/71143205/800c45a4-4c4c-42d5-b09b-c81cfcc0e6e0 )
![image ](https://github.com/24eme/signaturepdf/assets/71143205/a008d765-3a74-4ab4-b2bc-4af6c81575fe )
### Metadata feature
![image ](https://github.com/24eme/signaturepdf/assets/71143205/f543d665-0ab0-4d2b-8be1-39238879bd6c )
![image ](https://github.com/24eme/signaturepdf/assets/71143205/1f195bae-4af3-4d7b-9e31-3acd7552c2eb )
### Compression feature
![image ](https://github.com/24eme/signaturepdf/assets/71143205/7d0e93a3-5567-4545-9c43-033b9028b036 )