BentoPDF ora modifica davvero i PDF: Acrobat ha un nuovo rivale open source

BentoPDF evolve in un vero editor PDF: modifica testo e immagini nel browser, mantiene i file in locale e introduce nuovi motori per compressione, conversione e verifica degli standard PDF.

Modificare un PDF direttamente nel browser non può e non deve essere limitato soltanto all’aggiunta di una firma, a coprire una frase o a sovrapporre una casella di testo. Con l’ultima versione di BentoPDF, il progetto open source compie un salto ambizioso: permette modificare il testo contenuto nel documento, mantenendo font, formattazione e disposizione degli elementi, senza inviare il file a un server remoto. Alla nuova funzione si affiancano Hyper Compress e Kura, due motori indipendenti dedicati rispettivamente alla compressione e alla conversione/preflight secondo gli standard professionali PDF.

Con conversione s’intende la trasformazione di un PDF in una variante conforme a uno standard specifico, per esempio PDF/A per l’archiviazione o PDF/X per la stampa; con preflight si fa invece riferimento all’analisi del file per verificare che rispetti davvero i requisiti tecnici, facendo emergere eventuali errori o incompatibilità.

Il formato PDF, nato nei primi anni ’90 con Adobe e standardizzato nel 2008 come ISO 32000, non nasce come formato di elaborazione testi. Una pagina PDF descrive essenzialmente cosa disegnare, dove disegnarlo e con quali risorse: testo, immagini, vettori, font e trasformazioni geometriche. Ricostruire da quella rappresentazione qualcosa che si comporti come un paragrafo di Word o LibreOffice Writer è quindi cosa complessa.

BentoPDF affronta il problema mantenendo la caratteristica che lo ha distinto sin dall’inizio: l’elaborazione avviene lato client. Il progetto dichiara più di 50 strumenti e consente di unire, dividere, convertire, comprimere, correggere, firmare e modificare documenti dal browser.

BentoPDF modifica il testo esistente e lo ricompone

La funzione più importante della nuova versione di BentoPDF è quella che permette di lavorare sul contenuto originale: l’utente può selezionare un paragrafo, modificarlo e lasciare che BentoPDF esegua il reflow del testo, ossia la ricomposizione delle righe quando aumenta o diminuisce la lunghezza della frase.

L’editor gestisce grassetto, corsivo, sottolineatura, barrato, apice e pedice, famiglia e dimensione del carattere, colore, contorno, spaziatura tra caratteri e interlinea. A livello di paragrafo sono disponibili allineamento a sinistra, centrato, a destra e giustificato, elenchi numerati o puntati con livelli di rientro e direzione del testo LTR e RTL.

BentoPDF si occupa di analizzare gli oggetti PDF, tenta di ricostruire la relazione tra glifi e testo, riconosce caratteristiche tipografiche e genera nuovamente un content stream coerente con le modifiche dell’utente. Il maintainer stesso definisce l’editor una delle parti più difficili sviluppate per BentoPDF e avverte che possono ancora emergere errori con documenti particolarmente complessi.

Editor PDF locale gratuito

C’è anche una limitazione importante legata al browser. L’accesso ai font installati localmente sfrutta la Local Font Access API, tecnologia che al momento non gode di supporto uniforme fra i browser. BentoPDF indica Chrome, Edge e in generale i browser basati su Chromium come quelli nei quali l’integrazione con i font locali funziona pienamente. Firefox e altri browser devono fare i conti con l’assenza di questa API.

Non significa che l’editor sia inutilizzabile altrove, ma la corrispondenza tipografica può diventare più difficile quando il PDF richiede un font non incorporato oppure un carattere che il subset presente nel file non contiene.

Modifica contenuto PDF da browser con BentoPDF

Non solo testo: immagini, oggetti e ordine degli elementi

L’intervento sulla pagina va oltre i caratteri. BentoPDF permette di aggiungere e sostituire immagini, esportarle come PNG, modificarle con un programma esterno e reinserire il risultato. Gli oggetti possono essere allineati, distribuiti, ruotati, capovolti, duplicati e spostati avanti o indietro nello stack grafico.

È presente anche la ricerca e sostituzione sull’intero documento, insieme al controllo ortografico, al dizionario personale e alla possibilità di cambiare lingua. Per i PDF taggati compare inoltre la gestione del testo alternativo delle immagini e l’esportazione del testo secondo l’ordine di lettura.

Il nuovo testo inserito nell’editor finisce direttamente nel flusso dei contenuti PDF e rimane selezionabile e ricercabile: rasterizzare una pagina o trasformare ogni carattere in forme vettoriali garantirebbe magari un risultato visivamente corretto, ma farebbe perdere gran parte della semantica del documento.

La privacy locale è reale, ma conviene capire come funziona

BentoPDF presenta il modello client-side come uno dei suoi principali vantaggi: il documento PDF da elaborare rimane infatti nel browser e il sito dichiara di non caricarlo su server remoti. Per contratti, documenti aziendali, referti, fatture o PDF contenenti informazioni riservate è una differenza cruciale rispetto ai servizi web che richiedono l’upload del file.

Va detto però che “elaborazione locale” non equivale automaticamente a “applicazione completamente isolata da Internet”: la configurazione predefinita del progetto può caricare alcuni componenti WebAssembly tramite CDN, in particolare moduli collegati a PyMuPDF, Ghostscript e CoherentPDF. Il PDF resta sul dispositivo, ma il codice necessario per alcune operazioni può essere scaricato dalla rete.

Chi vuole un ambiente realmente chiuso può ospitare BentoPDF in proprio e configurare localmente i moduli WASM. Il repository documenta deployment Docker, Podman, hosting statico e installazioni senza accesso alla rete.

Esiste inoltre l’immagine bentopdf-simple, pensata per server interni: non è una versione ridotta, ma elimina gli elementi promozionali del sito mantenendo gli strumenti PDF.

Hyper Compress: comprimere PDF in modo efficace

Un’altra importante innovazione introdotta in BentoPDF prende il nome di Hyper Compress: ne abbiamo già parlato in apertura.

Non è ancora integrata nell’interfaccia principale dell’applicazione, ma il motore è già disponibile separatamente come CLI, SDK Node.js, libreria C, servizio self-hosted e applicazione WebAssembly utilizzabile dal browser.

L’idea alla base di Hyper Compress parte da un problema molto concreto: chiedere a un programma di comprimere PDF non garantisce che il file risultante occupi meno spazio. Alcune ottimizzazioni possono modificare immagini e stream, ricostruire strutture interne e aggiungere informazioni che, su determinati documenti, producono un file persino più grande.

Hyper Compress utilizza invece quella che il progetto definisce compressione monotona: se il risultato non è più piccolo dell’originale, restituisce il file iniziale senza modificarlo.

Il motore offre anche una modalità lossless che evita la ricodifica distruttiva delle immagini; con profili più aggressivi può invece intervenire sulla risoluzione e sulla qualità delle immagini, continuando però a conservare testo ricercabile e struttura del documento.

Un’opzione interessante permette perfino di specificare una dimensione obiettivo, per esempio 2 MB. Hyper Compress cerca così una configurazione che mantenga la qualità più elevata possibile restando sotto quella soglia; se l’obiettivo non può essere raggiunto, restituisce la versione più piccola ottenibile e segnala il mancato raggiungimento del traguardo definito dall’utente.

Kura affronta PDF/A, PDF/UA, PDF/X e il preflight professionale

Se Hyper Compress si occupa delle dimensioni, Kura entra in un territorio ancora più specialistico: è un motore open source per conversione, verifica e preflight dei PDF, anch’esso sviluppato dal gruppo BentoPDF ma non ancora integrato nell’applicazione principale.

Kura supporta gli undici profili PDF/A indicati dal progetto: PDF/A-1a e 1b; PDF/A-2a, 2b e 2u; PDF/A-3a, 3b e 3u; PDF/A-4, 4e e 4f. Si tratta dei profili destinati alla conservazione a lungo termine dei documenti, con regole che limitano o disciplinano caratteristiche che potrebbero compromettere la riproducibilità futura.

Per l’accessibilità sono presenti PDF/UA-1 e PDF/UA-2. PDF/UA non si limita a rendere il testo selezionabile: richiede una struttura logica corretta, informazioni semantiche, ordine di lettura e altri elementi necessari alle tecnologie assistive: un file che appare perfetto sul monitor può risultare pessimo per uno screen reader.

Kura comprende inoltre famiglie PDF/X per la produzione tipografica, PDF/E per documenti tecnici e ingegneristici e PDF/VT per la stampa con dati variabili e transazionale. Il supporto dichiarato si estende anche alle fatture elettroniche ibride basate su PDF.

Come provare BentoPDF senza installare nulla

Il modo più semplice per capire come funziona BentoPDF consiste nell’aprire direttamente il sito ufficiale e, ad esempio, cliccare sul primo pulsante Modifica testo PDF. Non serve creare un account e, per la maggior parte degli strumenti, non bisogna installare alcun componente: si seleziona il PDF dal browser, si sceglie l’operazione da effettuare e il file viene elaborato sul dispositivo dell’utente.

Modifica documenti PDF con BentoPDF

Il server web consegna l’applicazione al browser e l’elaborazione del documento avviene sul client. Per provare il nuovo editor, per esempio, basta aprire lo strumento di modifica PDF, caricare un documento e fare clic sul testo riconosciuto dall’editor. Da lì è possibile correggere parole, cambiare font e dimensione, intervenire sull’allineamento oppure spostare gli oggetti presenti sulla pagina.

Per un utilizzo occasionale il sito pubblico è quindi sufficiente. Chi lavora invece con documenti riservati, vuole evitare dipendenze esterne oppure desidera mettere BentoPDF a disposizione di un gruppo di lavoro può installarne una propria istanza.

Installare BentoPDF in locale con Docker

La soluzione più rapida per eseguire BentoPDF sul proprio computer è Docker. Il progetto pubblica immagini già pronte sul GitHub Container Registry e su Docker Hub, quindi non occorre compilare nulla.

Con Docker installato è sufficiente aprire PowerShell, il Terminale di Windows o una shell Linux/macOS ed eseguire:

docker run -d -p 3000:8080 ghcr.io/alam00000/bentopdf-simple:latest

L’immagine è scaricata automaticamente e il container espone la porta interna 8080 sulla porta 3000 del computer. A questo punto basta digitare nel browser:

localhost:3000

La variante consigliata per l’uso personale, aziendale o interno è bentopdf-simple. Contiene gli stessi strumenti PDF dell’edizione completa, ma rimuove dalla pagina le sezioni promozionali del sito pubblico.

Il container utilizza inoltre nginx-unprivileged e gira con un utente non root. La porta 8080 interna evita quindi la necessità di privilegi elevati: è una caratteristica essenziale soprattutto quando BentoPDF viene installato su un server condiviso o inserito in un’infrastruttura containerizzata.

Come fermare, aggiornare e riavviare BentoPDF

Un’installazione tramite container richiede pochissima manutenzione. Dopo aver individuato il container con docker ps, lo si può arrestare utilizzando il comando docker stop ID_CONTAINER.

Per aggiornarlo a una nuova release conviene scaricare l’immagine più recente con l’istruzione che segue e ricreare il container:

docker pull ghcr.io/alam00000/bentopdf-simple:latest

Dal momento che BentoPDF non utilizza un database e non conserva i PDF lato server, non esiste una particolare procedura di migrazione dei dati. L’applicazione è sostanzialmente un insieme di file statici serviti dal container.

Per un utilizzo continuativo è però più comodo ricorrere a Docker Compose, perché consente di descrivere la configurazione in un file e riavviare automaticamente BentoPDF dopo il reboot del sistema.

BentoPDF con Docker Compose

La configurazione minima consiste in un servizio che utilizza l’immagine ufficiale, espone la porta 3000 e imposta il riavvio automatico. Il file docker-compose.yml può essere impostato così come segue:

services:
  bentopdf:
    image: ghcr.io/alam00000/bentopdf-simple:latest
    container_name: bentopdf
    ports:
      - '3000:8080'
    restart: unless-stopped

Dalla directory che contiene il file si avvia il tutto digitando docker compose up -d. Il parametro -d lascia il container in esecuzione in background e anche in questo caso l’interfaccia risponde all’indirizzo localhost:3000.

Con Podman la procedura è praticamente identica. Il comando più rapido è il seguente:

podman run -d -p 3000:8080 ghcr.io/alam00000/bentopdf-simple:latest

Su Linux si può persino usare Podman Quadlet per trasformare BentoPDF in un servizio gestito tramite systemd. È una soluzione interessante per workstation o piccoli server nei quali si vuole ottenere avvio automatico, restart e aggiornamento del container senza mantenere un demone Docker permanente.

BentoPDF in locale, in LAN o sul cloud

BentoPDF non richiede necessariamente Docker né un vero backend applicativo: è essenzialmente un’applicazione web statica composta da HTML, JavaScript, CSS e moduli WebAssembly.

Chi lo preferisse può quindi compilare il progetto con Node.js e npm oppure scaricare i file già pronti dalle release GitHub e pubblicarli con nginx, Apache, Caddy o un normale servizio di hosting statico.

È proprio questa architettura a rendere possibile l’uso su una piccola VM, un NAS, un server interno oppure piattaforme come Vercel, Netlify e Cloudflare Pages: il server distribuisce l’applicazione, mentre gran parte dell’elaborazione dei PDF avviene direttamente nel browser dell’utente.

Per l’uso da altri dispositivi della rete locale o via Internet conviene però pubblicare BentoPDF tramite HTTPS. Alcune funzioni più avanzate, come la conversione dei documenti Office eseguita direttamente nel browser tramite LibreOffice compilato in WebAssembly, richiedono infatti particolari protezioni del browser che normalmente si attivano solo su connessioni sicure HTTPS

Inoltre, chi volesse ottenere un’installazione realmente indipendente da Internet può ospitare in locale anche le librerie WASM e le risorse OCR che, nella configurazione predefinita, come raccontato in precedenza, possono essere recuperate da CDN esterne. BentoPDF può inoltre essere personalizzato nella lingua, nel branding e negli strumenti disponibili.

Un’alternativa ad Acrobat? Sì, ma con qualche cautela

La direzione presa da BentoPDF è chiara: trasformare una raccolta di piccoli strumenti Web in una piattaforma capace di affrontare anche operazioni che normalmente associamo ad Adobe Acrobat Pro, software professionali di prestampa o SDK commerciali.

Non è ancora possibile parlare di “sostituto universale”: l’editor del testo di BentoPDF è esplicitamente indicato come “lavoro in corso” e ci sono molteplici casi limite da gestire: font non incorporabili, codifiche insolite, pagine generate da CAD, trasparenze, firme digitali, documenti taggati male, moduli complessi e file che sfruttano caratteristiche accumulate in più di 30 anni di evoluzione del formato.

Inoltre, modificare il contenuto di un PDF firmato digitalmente normalmente invalida la firma precedente; una conformità PDF/A o PDF/X va ricontrollata dopo qualunque trasformazione significativa.

Il passaggio dall’aggiunta di elementi sopra una pagina (come avveniva nelle release precedenti) alla modifica effettiva del contenuto cambia radicalmente la natura del programma.

Se Hyper Compress e Kura entreranno poi nell’interfaccia principale mantenendo le caratteristiche dichiarate dai repository, BentoPDF potrebbe concentrare in un’applicazione web locale funzioni che oggi richiedono spesso software diversi: editing, compressione controllata, conversione archivistica, accessibilità e preflight.

Il vero punto di forza di BentoPDF è l’architettura locale

L’aspetto più interessante di BentPDF, in definitiva, è l’idea di utilizzare tecnologie web moderne per spostare sul computer dell’utente operazioni tradizionalmente affidate a servizi online.

Per il PDF la scelta è fondamentale: in questo formato sono abitualmente gestiti documenti che più spesso contengono informazioni che non vorremmo inviare a un servizio cloud: contratti, documentazione fiscale, pratiche amministrative, documenti sanitari, buste paga, report aziendali.

Un progetto open source, installabile anche su infrastruttura propria e capace di utilizzare WebAssembly per eseguire localmente motori complessi, offre un modello che non può non essere apprezzato. Non elimina la necessità di verificare qualità, sicurezza e conformità degli output; rende però possibile effettuare quelle operazioni senza trasformare automaticamente ogni PDF in un file caricato online.

Ti consigliamo anche

Link copiato negli appunti