2021-10-07 12:42:18 +02:00
|
|
|
# Signature de PDF
|
2021-05-04 00:50:11 +02:00
|
|
|
|
2021-10-07 12:42:18 +02:00
|
|
|
Logiciel web libre permettant de signer un PDF.
|
2021-05-04 00:50:11 +02:00
|
|
|
|
2021-10-07 12:40:00 +02:00
|
|
|
## Instances
|
|
|
|
|
|
|
|
Liste des instances permettant d'utiliser ce logiciel :
|
|
|
|
|
|
|
|
- [pdf.24eme.fr](https://pdf.24eme.fr)
|
2022-01-28 18:24:01 +01:00
|
|
|
- [pdf.libreon.fr](https://pdf.libreon.fr)
|
2021-10-07 12:40:00 +02:00
|
|
|
|
2021-05-04 00:50:11 +02:00
|
|
|
## License
|
|
|
|
|
|
|
|
Logiciel libre sous license AGPL V3
|
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
|
|
|
Dépendances :
|
|
|
|
|
|
|
|
- php >= 5.6
|
|
|
|
- rsvg-convert
|
|
|
|
- pdftk
|
2021-09-21 18:11:47 +02:00
|
|
|
- imagemagick
|
2021-09-21 01:51:27 +02:00
|
|
|
- potrace
|
2021-05-04 00:50:11 +02:00
|
|
|
|
|
|
|
Sur debian :
|
|
|
|
|
2021-10-24 01:47:23 +02:00
|
|
|
```
|
2021-09-21 18:11:47 +02:00
|
|
|
sudo aptitude install php librsvg2-bin pdftk imagemagick potrace
|
2021-10-24 01:47:23 +02:00
|
|
|
```
|
2021-05-04 00:50:11 +02:00
|
|
|
|
|
|
|
Récupération des sources :
|
|
|
|
|
2021-10-24 01:47:23 +02:00
|
|
|
```
|
2021-05-04 00:50:11 +02:00
|
|
|
git clone https://github.com/24eme/signaturepdf.git
|
2021-10-24 01:47:23 +02:00
|
|
|
```
|
2021-05-04 00:50:11 +02:00
|
|
|
|
2021-10-24 01:47:23 +02:00
|
|
|
Pour le lancer :
|
2021-05-04 00:50:11 +02:00
|
|
|
|
2021-10-24 01:47:23 +02:00
|
|
|
```
|
2021-10-07 12:36:11 +02:00
|
|
|
php -S localhost:8000 -t public
|
2021-10-24 01:47:23 +02:00
|
|
|
```
|
2021-05-04 00:50:11 +02:00
|
|
|
|
2021-11-26 00:22:21 +01:00
|
|
|
### Configuration de PHP
|
|
|
|
|
|
|
|
```
|
|
|
|
upload_max_filesize = 24M # Taille maximum du fichier PDF à signer
|
|
|
|
post_max_size = 24M # Taille maximum du fichier PDF à signer
|
|
|
|
max_file_uploads = 201 # Nombre de pages maximum du PDF, ici 200 pages + le PDF d'origine
|
|
|
|
```
|
2022-01-26 15:11:26 +01:00
|
|
|
|
|
|
|
### Déployer avec apache
|
|
|
|
|
|
|
|
```
|
|
|
|
DocumentRoot /path/to/signaturepdf/public
|
|
|
|
|
|
|
|
<Directory /path/to/signaturepdf/public>
|
|
|
|
Require all granted
|
|
|
|
FallbackResource /index.php
|
|
|
|
php_value max_file_uploads 201
|
|
|
|
php_value upload_max_filesize 24M
|
|
|
|
php_value post_max_size 24M
|
|
|
|
</Directory>
|
|
|
|
```
|
|
|
|
|
2022-01-28 18:24:01 +01:00
|
|
|
### Déployer avec docker
|
|
|
|
|
|
|
|
#### Construction de l'image
|
|
|
|
|
|
|
|
```bash
|
|
|
|
docker build -t signaturepdf .
|
|
|
|
````
|
|
|
|
|
|
|
|
#### Lancement d'un conteneur
|
|
|
|
|
|
|
|
```bash
|
|
|
|
docker run -d --name=signaturepdf -p 8080:80 signaturepdf
|
|
|
|
````
|
|
|
|
|
2022-01-30 20:49:44 +01:00
|
|
|
[localhost:8080](http://localhost:8080)
|
2022-01-28 18:24:01 +01:00
|
|
|
|
|
|
|
#### Configuration
|
|
|
|
|
|
|
|
Les variables suivantes permettent de configurer le déployement :
|
|
|
|
|
|
|
|
|Variable|description|exemple|defaut|
|
|
|
|
|-----|-----|-----|-----|
|
|
|
|
|`SERVERNAME`|url de déploiement|`pdf.24eme.fr`|localhost|
|
2022-01-30 20:49:44 +01:00
|
|
|
|`UPLOAD_MAX_FILESIZE`|Taille maximum du fichier PDF à signer|48M|24M|
|
|
|
|
|`POST_MAX_SIZE`|Taille maximum du fichier PDF à signer|48M|24M|
|
2022-01-28 18:24:01 +01:00
|
|
|
|`MAX_FILE_UPLOADS`|Nombre de pages maximum du PDF, ici 200 pages + le PDF d'origine|401|201|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
docker run -d --name=signaturepdf -p 8080:80 -e SERVERNAME=pdf.example.org -e UPLOAD_MAX_FILESIZE=48M -e POST_MAX_SIZE=48M -e MAX_FILE_UPLOADS=401 signaturepdf
|
|
|
|
````
|
|
|
|
|
2021-11-26 00:34:14 +01:00
|
|
|
## Tests
|
|
|
|
|
|
|
|
Pour exécuter les tests fonctionnels :
|
|
|
|
|
|
|
|
```
|
|
|
|
make test
|
|
|
|
```
|
|
|
|
|
|
|
|
Les tests sont réalisés avec `puppeteer` et `jest`.
|
|
|
|
|
|
|
|
Pour lancer les tests et voir le navigateur (en mode debug) :
|
|
|
|
|
|
|
|
```
|
|
|
|
DEBUG=1 make test
|
|
|
|
```
|
2021-11-26 00:22:21 +01:00
|
|
|
|
2021-05-04 01:14:57 +02:00
|
|
|
## Librairies utilisées
|
2021-05-04 00:50:11 +02:00
|
|
|
|
2021-09-22 00:52:50 +02:00
|
|
|
- **Fat-Free** micro framework PHP : https://github.com/bcosca/fatfree (GPLv3)
|
|
|
|
- **Bootstrap** framework html, css et javascript : https://getbootstrap.com/ (MIT)
|
|
|
|
- **PDF.js** librairie de lecture de PDF dans un canvas HTML : https://github.com/mozilla/pdf.js (Apache-2.0)
|
|
|
|
- **Fabric.js** librairie pour manipuler un canvas HTML : https://github.com/fabricjs/fabric.js (MIT)
|
|
|
|
- **PDFtk** outils de manipulation de PDF (GPL)
|
|
|
|
- **librsvg** outils de manipulation de SVG : https://gitlab.gnome.org/GNOME/librsvg (LGPL-2+)
|
|
|
|
- **potrace** outils de transformation d'image bitamp en image vectorisé : http://potrace.sourceforge.net/ (GPLv2)
|
|
|
|
- **OpenType.js** outils de transformation d'un texte et sa police en chemin : https://github.com/opentypejs/opentype.js (MIT)
|
|
|
|
- **ImageMagick** ensemble d'outils de manipulation d'images : https://imagemagick.org/ (Apache-2.0)
|
2021-10-07 12:42:18 +02:00
|
|
|
- **Caveat** police de caractères style écriture à la main : https://github.com/googlefonts/caveat (OFL-1.1)
|
2021-10-24 01:47:23 +02:00
|
|
|
|
2021-11-26 00:34:14 +01:00
|
|
|
Pour les tests :
|
2021-10-24 01:47:23 +02:00
|
|
|
|
2021-11-26 00:34:14 +01:00
|
|
|
- **Jest** Framework de Test Javascript : https://jestjs.io/ (MIT)
|
|
|
|
- **Puppeteer** librairie Node.js pour contrôler un navigateur : https://github.com/puppeteer/puppeteer (Apache-2.0)
|
2021-10-24 01:52:34 +02:00
|
|
|
|
|
|
|
|
|
|
|
|