PHPackages                             elamacchia/gespidieffe - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. elamacchia/gespidieffe

ActiveLibrary

elamacchia/gespidieffe
======================

Gestione e modifica file PDF (censura, unione, divisione, rotazione, conteggio pagine)

00Blade

Since Mar 21Pushed 1mo agoCompare

[ Source](https://github.com/EnzoLamacchia/GesPidieffe)[ Packagist](https://packagist.org/packages/elamacchia/gespidieffe)[ RSS](/packages/elamacchia-gespidieffe/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

GespidiEffe — Gestione e modifica file PDF
==========================================

[](#gespidieffe--gestione-e-modifica-file-pdf)

[![Framework](https://camo.githubusercontent.com/1cc1837b2f37df2a870b75661db08ca3cbb7a63d8f3401e42d7298c123898ea3/68747470733a2f2f696d672e736869656c64732e696f2f7374617469632f76313f6c6162656c3d4672616d65776f726b266d6573736167653d4c61726176656c253230392e7826636f6c6f723d726564267374796c653d666f722d7468652d6261646765266c6f676f3d6c61726176656c)](https://laravel.com)[![PHP Version](https://camo.githubusercontent.com/da4207a727b5639bf64ed32a1aa90a527bf7d74d7bc3fbce1cb93eb70e266690/68747470733a2f2f696d672e736869656c64732e696f2f7374617469632f76313f6c6162656c3d50485025323056657273696f6e266d6573736167653d382e3126636f6c6f723d373737424234267374796c653d666f722d7468652d6261646765266c6f676f3d706870)](https://php.net)[![License](https://camo.githubusercontent.com/58839975da5e71ac5361806c6306e05d68621aef7fbf0e34f07909d29a4d247c/68747470733a2f2f696d672e736869656c64732e696f2f7374617469632f76313f6c6162656c3d4c6963656e7365266d6573736167653d4d495426636f6c6f723d677265656e267374796c653d666f722d7468652d6261646765)](https://opensource.org/licenses/MIT)

GesPidieffe è un package Laravel per la gestione e la modifica di file PDF direttamente dal browser. Fa parte dell'ecosistema **AdmEL** ed è progettato per essere integrato come package locale in un'applicazione Laravel 9.

---

Funzionalità
------------

[](#funzionalità)

FunzioneDescrizione**Censura PDF**Disegna rettangoli neri su aree sensibili del documento; supporto ibrido vettoriale/raster**Unione PDF (Merge)**Carica più file PDF, riordinali con drag &amp; drop, uniscili in un unico documento**Divisione PDF (Split)**Estrae singole pagine o intervalli; download del singolo PDF o di uno ZIP con tutti i file estratti**Organizza pagine**Griglia drag &amp; drop per riordinare, duplicare o eliminare singole pagine**Ruota pagine**Ruota singole pagine o l'intero documento a passi di 90°; badge visivo con i gradi correnti**Numerazione pagine**Aggiunge numeri di pagina con posizione, font, dimensione e colore personalizzabili; testo originale rimane selezionabile**Statistiche utilizzo**Dashboard con contatori giornalieri, settimanali e globali per ciascuna funzione; storico delle ultime 12 settimane; accessibile solo agli utenti con permesso `usa gespidieffe`---

Requisiti
---------

[](#requisiti)

### Applicazione host

[](#applicazione-host)

RequisitoVersionePHP^8.0Laravel9.xLaravel Jetstream^2.14Laravel Sanctum^3.0### Dipendenze PHP (Composer)

[](#dipendenze-php-composer)

PackageVersione`setasign/fpdi`^2.3`tecnickcom/tcpdf`^6.5### Dipendenze di sistema (nel container Docker)

[](#dipendenze-di-sistema-nel-container-docker)

I seguenti strumenti devono essere presenti nel container PHP:

StrumentoUtilizzo`qpdf`Merge, split, rotazione, conteggio pagine, estrazione in formato JSON`ghostscript` (`gs`)Rasterizzazione di pagine PDF in PNG (per la censura raster)`pdftk`Applicazione overlay di numerazione pagine (`multistamp`)Nel Dockerfile (Laravel Sail, runtime PHP 8.1) questi pacchetti vengono installati con:

```
apt-get install -y ghostscript qpdf pdftk
```

---

Ambiente di sviluppo
--------------------

[](#ambiente-di-sviluppo)

VoceValoreSistema operativoWSL Ubuntu 18.04 su Windows 10 HomeShellbash (sintassi Unix)PHP8.1FrameworkLaravel 9FrontendTailwind CSS, Alpine.js, Vite 4DatabaseMariaDB 10 (Docker/Sail)CacheRedis (Docker/Sail)App URLAdminerVite dev serverporta 5174---

Installazione
-------------

[](#installazione)

### 1. Aggiungere il package come dipendenza locale

[](#1-aggiungere-il-package-come-dipendenza-locale)

Nel `composer.json` dell'applicazione host, aggiungere il namespace PSR-4 nella sezione `autoload`:

```
"autoload": {
    "psr-4": {
        "Elamacchia\\Gespidieffe\\": "package/gespidieffe/src/"
    }
}
```

Quindi copiare la cartella `package/gespidieffe/` nella propria applicazione e rigenerare l'autoload:

```
composer dump-autoload
```

### 2. Registrare il Service Provider

[](#2-registrare-il-service-provider)

In `config/app.php`, aggiungere nella sezione `providers`:

```
Elamacchia\Gespidieffe\GespidieffeServiceProvider::class,
```

> Il package supporta anche l'auto-discovery tramite il campo `extra.laravel.providers` nel proprio `composer.json`.

### 3. Verificare le dipendenze di sistema

[](#3-verificare-le-dipendenze-di-sistema)

Assicurarsi che `qpdf`, `ghostscript` e `pdftk` siano installati nel container (vedi sezione *Requisiti*).

### 4. Creare la cartella per i file temporanei

[](#4-creare-la-cartella-per-i-file-temporanei)

```
mkdir -p storage/app/gespidieffe/tmp
```

La cartella viene usata per salvare i PDF caricati e i file elaborati durante le sessioni utente.

### 5. Configurare lo scheduler (pulizia automatica)

[](#5-configurare-lo-scheduler-pulizia-automatica)

GespidiEffe registra automaticamente un task nello scheduler di Laravel che rimuove ogni ora i file temporanei più vecchi di 24 ore. Assicurarsi che il cron di Laravel sia attivo sul server:

```
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
```

---

Comandi Artisan
---------------

[](#comandi-artisan)

ComandoDescrizione`php artisan gespidieffe:pulisci-tmp`Elimina i file temporanei più vecchi di 24 ore (default)`php artisan gespidieffe:pulisci-tmp --ore=48`Elimina i file più vecchi di N ore`php artisan gespidieffe:azzera-contatori`Azzera manualmente tutti i contatori (giornalieri, settimanali, globali) e salva lo storico---

Route
-----

[](#route)

Tutte le route sono protette dal middleware `['web', 'auth:sanctum', 'verified']`: solo gli utenti autenticati e verificati possono accedere. I guest vengono reindirizzati automaticamente al login da Sanctum/Jetstream.

Prefix URI: `/gespidieffe` — Named prefix: `gespidieffe.`

MetodoURINome routeGET`/gespidieffe/``gespidieffe.home`GET`/gespidieffe/censura``gespidieffe.censura`POST`/gespidieffe/censura/upload``gespidieffe.censura.upload`GET`/gespidieffe/censura/editor/{file}``gespidieffe.censura.editor`POST`/gespidieffe/censura/applica``gespidieffe.censura.applica`GET`/gespidieffe/censura/download/{file}``gespidieffe.censura.download`DELETE/POST`/gespidieffe/censura/elimina/{file}``gespidieffe.censura.elimina`GET`/gespidieffe/censura/pdf/{file}``gespidieffe.censura.pdf`GET`/gespidieffe/merge``gespidieffe.merge`POST`/gespidieffe/merge/upload``gespidieffe.merge.upload`GET`/gespidieffe/merge/editor/{session}``gespidieffe.merge.editor`GET`/gespidieffe/merge/aggiungi/{session}``gespidieffe.merge.aggiungi`POST`/gespidieffe/merge/applica``gespidieffe.merge.applica`GET`/gespidieffe/merge/download/{file}``gespidieffe.merge.download`DELETE/POST`/gespidieffe/merge/elimina/{session}``gespidieffe.merge.elimina`GET`/gespidieffe/merge/pdf/{session}/{index}``gespidieffe.merge.pdf`GET`/gespidieffe/split``gespidieffe.split`POST`/gespidieffe/split/upload``gespidieffe.split.upload`GET`/gespidieffe/split/editor/{file}``gespidieffe.split.editor`POST`/gespidieffe/split/applica``gespidieffe.split.applica`GET`/gespidieffe/split/download/{file}``gespidieffe.split.download`GET`/gespidieffe/split/download-zip/{file}``gespidieffe.split.download-zip`DELETE/POST`/gespidieffe/split/elimina/{file}``gespidieffe.split.elimina`GET`/gespidieffe/split/pdf/{file}``gespidieffe.split.pdf`GET`/gespidieffe/organizza``gespidieffe.organizza`POST`/gespidieffe/organizza/upload``gespidieffe.organizza.upload`GET`/gespidieffe/organizza/editor/{file}``gespidieffe.organizza.editor`POST`/gespidieffe/organizza/applica``gespidieffe.organizza.applica`GET`/gespidieffe/organizza/download/{file}``gespidieffe.organizza.download`DELETE/POST`/gespidieffe/organizza/elimina/{file}``gespidieffe.organizza.elimina`GET`/gespidieffe/organizza/pdf/{file}``gespidieffe.organizza.pdf`GET`/gespidieffe/ruota``gespidieffe.ruota`POST`/gespidieffe/ruota/upload``gespidieffe.ruota.upload`GET`/gespidieffe/ruota/editor/{file}``gespidieffe.ruota.editor`POST`/gespidieffe/ruota/applica``gespidieffe.ruota.applica`GET`/gespidieffe/ruota/download/{file}``gespidieffe.ruota.download`DELETE/POST`/gespidieffe/ruota/elimina/{file}``gespidieffe.ruota.elimina`GET`/gespidieffe/ruota/pdf/{file}``gespidieffe.ruota.pdf`GET`/gespidieffe/numera``gespidieffe.numera`POST`/gespidieffe/numera/upload``gespidieffe.numera.upload`GET`/gespidieffe/numera/editor/{file}``gespidieffe.numera.editor`POST`/gespidieffe/numera/applica``gespidieffe.numera.applica`GET`/gespidieffe/numera/download/{file}``gespidieffe.numera.download`DELETE/POST`/gespidieffe/numera/elimina/{file}``gespidieffe.numera.elimina`GET`/gespidieffe/numera/pdf/{file}``gespidieffe.numera.pdf`GET`/gespidieffe/statistiche``gespidieffe.statistiche`> La route `/statistiche` richiede il middleware aggiuntivo `permission:usa gespidieffe` (Spatie Laravel Permission).

---

Architettura: flusso multi-step
-------------------------------

[](#architettura-flusso-multi-step)

Ogni funzione segue questo schema a cinque fasi:

```
1. Upload      → validazione → salva in storage/app/gespidieffe/tmp/{uuid}.pdf
                              → redirect all'editor

2. Editor      → anteprima pagine con PDF.js (client-side)
                              → Alpine.js per interazione utente

3. Elaborazione → POST con parametri operazione
                              → manipolazione server-side (qpdf / Ghostscript / TCPDF / pdftk)
                              → risposta JSON con { download_token }

4. Download    → GET con token → response()->download()

5. Pulizia     → DELETE/POST elimina file della sessione
                              → scheduler rimuove automaticamente file > 24h

```

### File temporanei

[](#file-temporanei)

- Cartella: `storage/app/gespidieffe/tmp/`
- Naming: `{uuid}.pdf` (originale), `{uuid}_.pdf` (output elaborato)

---

Struttura del package
---------------------

[](#struttura-del-package)

```
package/gespidieffe/
├── composer.json
└── src/
    ├── GespidieffeServiceProvider.php
    ├── Console/
    │   ├── PulisciTmpCommand.php
    │   └── AzzeraContatoriCommand.php
    ├── Http/Controllers/
    │   ├── GespidieffeController.php
    │   ├── CensuraPdfController.php
    │   ├── MergePdfController.php
    │   ├── SplitPdfController.php
    │   ├── OrganizzaPdfController.php
    │   ├── RuotaPdfController.php
    │   ├── NumeraPdfController.php
    │   └── StatisticheController.php
    ├── Models/
    │   ├── GespidieffeContatore.php
    │   └── GespidieffeStoricoSettimanale.php
    ├── Services/
    │   └── ContatorePdfService.php
    ├── database/migrations/
    │   ├── 2024_01_01_000001_create_gespidieffe_contatori_table.php
    │   └── 2024_01_01_000002_create_gespidieffe_storico_settimanale_table.php
    ├── routes/
    │   └── web.php
    └── resources/views/
        ├── layouts/app.blade.php
        ├── home.blade.php
        ├── statistiche/
        │   └── index.blade.php
        ├── censura/
        │   ├── upload.blade.php
        │   └── editor.blade.php
        ├── merge/
        │   ├── upload.blade.php
        │   └── editor.blade.php
        ├── split/
        │   ├── upload.blade.php
        │   └── editor.blade.php
        ├── organizza/
        │   ├── upload.blade.php
        │   └── editor.blade.php
        ├── ruota/
        │   ├── upload.blade.php
        │   └── editor.blade.php
        └── numera/
            ├── upload.blade.php
            └── editor.blade.php

```

---

Identificativi
--------------

[](#identificativi)

VoceValoreNome Composer`elamacchia/gespidieffe`Namespace PHP`Elamacchia\Gespidieffe\`Namespace view`gespidieffe::`Service Provider`Elamacchia\Gespidieffe\GespidieffeServiceProvider`LicenzaMITAutoreEnzo Lamacchia — ---

Licenza
-------

[](#licenza)

Distribuito sotto licenza [MIT](https://opensource.org/licenses/MIT).

###  Health Score

19

—

LowBetter than 10% of packages

Maintenance59

Moderate activity, may be stable

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/b5b7e44f9925559b7d9379e1783bd20833099ffeed91d983b8a2789e14679b2a?d=identicon)[EnzoLamacchia](/maintainers/EnzoLamacchia)

---

Top Contributors

[![EnzoLamacchia](https://avatars.githubusercontent.com/u/77725032?v=4)](https://github.com/EnzoLamacchia "EnzoLamacchia (3 commits)")

### Embed Badge

![Health badge](/badges/elamacchia-gespidieffe/health.svg)

```
[![Health](https://phpackages.com/badges/elamacchia-gespidieffe/health.svg)](https://phpackages.com/packages/elamacchia-gespidieffe)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
