PDF Tools per VS Code: visualizza, salva e stampa PDF in Visual Studio Code Estensione gratuita e open source per visualizzare PDF, compilare moduli, stampare ed esportare testo e dati direttamente in Visual Studio Code

Lavorando spesso con i PDF in Visual Studio Code, avevo bisogno di un'estensione che mi permettesse di aprirli senza passare ogni volta da un'applicazione esterna: specifiche, documentazione, datasheet e, ogni tanto, qualche modulo da compilare. Quelle che ho trovato, però, si limitano a mostrare il documento. Con i moduli, poi, c'è un problema piuttosto fastidioso: i campi sembrano modificabili, ci scrivi dentro, ma quando chiudi il file non è stato salvato niente.

Dopo averci sbattuto il naso un paio di volte ho deciso di realizzarne una che colmasse queste lacune. Il risultato si chiama PDF Tools: è un'estensione gratuita, open source (licenza MIT) e la trovate sul Visual Studio Marketplace. Il codice sorgente è su GitHub e la documentazione, in inglese, è nella wiki del progetto.

Compilazione di un modulo PDF in VS Code con PDF Tools: campi del modulo nella barra laterale, valori inseriti nel PDF, modifiche non salvate indicate sulla scheda
Un modulo compilato in VS Code: il pallino sulla scheda indica le modifiche non ancora salvate.

Il punto di partenza: salvare davvero i moduli

La prima cosa che volevo era poter compilare un modulo PDF e salvarlo con Ctrl+S, esattamente come un file di testo, ritrovando poi i valori aprendo il file in Acrobat o in qualsiasi altro programma. PDF Tools in questo si comporta come un editor vero e proprio: le modifiche non salvate compaiono con il tipico "pallino" sulla scheda, con le possibilità Salva con nome, Ripristina file e il salvataggio automatico disponibili come per qualsiasi altro file. Le modifiche, se presenti, vengono inoltre aggiunte in coda al file come aggiornamento incrementale, quindi il contenuto originale del PDF non viene riscritto.

Per i moduli lunghi ho aggiunto qualche comodità che mi mancava: un pannello con l'elenco dei campi (quelli modificati, quelli obbligatori, divisi per pagina), un comando per saltare al prossimo campo obbligatorio ancora vuoto e la possibilità di esportare e reimportare i dati in JSON o XFDF, il formato usato da Acrobat. Mi è servita, per esempio, per compilare la versione nuova di un modulo con i dati di quella vecchia.

Un visualizzatore che si comporta come VS Code

Visto che c'ero, ho voluto che anche la semplice lettura fosse comoda. Il rendering è affidato a PDF.js, lo stesso motore di Firefox, che mi ha consentito di implementare tutte le funzioni principali che ci si può aspettare da un visualizzatore di file PDF:

  • navigazione tra le pagine, Vai alla pagina con Ctrl+G e Indietro/Avanti dopo aver seguito un link interno;
  • zoom (anche con Ctrl+rotellina), rotazione, scorrimento verticale, orizzontale o a pagina singola, doppie pagine;
  • una barra laterale con miniature, struttura (i segnalibri), allegati, livelli e proprietà del documento, compresi i font usati;
  • ogni PDF si riapre alla pagina e con lo zoom con cui l'avevate lasciato.

La ricerca (Ctrl+F) funziona come quella di VS Code e di default ignora gli accenti, quindi cercando onesta trovate anche onestà. Con Ctrl+Shift+F si apre invece l'elenco di tutti i risultati, ognuno con un pezzo di testo intorno, raggruppati per pagina.

Ricerca in un PDF in VS Code con PDF Tools: ogni risultato con il suo contesto, raggruppato per pagina
Tutti i risultati della ricerca, raggruppati per pagina.

Usando quasi sempre un tema scuro, mi dava fastidio passare dall'editor a una pagina completamente bianca. Ho aggiunto quindi l'opzione Colori del tema, che mostra le pagine con lo sfondo e il colore del testo del tema attivo, lasciando le immagini con i loro colori. C'è anche una modalità Focus, in cui la pagina occupa tutto l'editor e resta solo una piccola barra flottante, e una modalità presentazione a schermo intero (Ctrl+Alt+P).

PDF Tools in un tema scuro di VS Code: pannello Struttura nella barra laterale e pagine mostrate con i colori del tema
Il pannello Struttura e le pagine con i colori del tema scuro.

Stampa ed esportazione

La stampa è stata la parte più complicata: VS Code non permette alle estensioni di aprire la finestra di stampa. PDF Tools crea quindi una copia temporanea del documento, con i valori del modulo inclusi anche se non li avete ancora salvati, e la apre nel vostro programma PDF predefinito, da cui si stampa normalmente. Si possono stampare tutte le pagine, solo quella corrente o un intervallo come 1-3, 7, 10-.

Per l'esportazione ho messo le cose che mi servivano davvero: aprire tutto il testo del PDF in una nuova scheda dell'editor, copiare una pagina come immagine o salvarla in PNG, e copiare un link vscode:// che riapre il PDF esattamente a quella pagina, utile negli appunti o nei file Markdown.

Come si usa

Basta installarla dal Marketplace, oppure cercando "PDF Tools" nella vista Estensioni di VS Code, e aprire un file .pdf. Tutti i comandi sono nella barra degli strumenti, nel menu … e nel riquadro comandi, sotto PDF Tools. Se avete già un'altra estensione PDF installata, la prima volta VS Code vi chiederà quale editor usare: scegliete Visualizzatore PDF.

Il menu di PDF Tools in VS Code con le azioni per file, navigazione, pagina, documento, visualizzazione e modulo
Il menu … raccoglie tutti i comandi.

L'estensione è tradotta in italiano, inglese, francese e tedesco e segue la lingua di VS Code. Funziona interamente offline: non raccoglie dati e non fa richieste di rete, i PDF restano sul vostro computer.

Nella wiki (in inglese) ho raccolto le guide su primi passi, compilazione dei moduli, stampa, esportazione, impostazioni e scorciatoie da tastiera, più una pagina di domande frequenti.

Cosa non fa (ancora)

Ci sono alcuni limiti di cui è bene essere consapevoli. I moduli XFA, quelli dinamici creati con Adobe LiveCycle o AEM Designer, non sono supportati. Non è possibile modificare il testo già presente nel PDF, e nei documenti scansionati senza livello di testo la ricerca non funziona, perché non c'è OCR. L'elenco completo è nel README.

Se la provate e trovate un bug, o vi manca qualcosa, potete aprire una segnalazione su GitHub oppure scrivermi: ogni feedback è benvenuto. E se vi è utile, una recensione sul Marketplace mi farebbe molto piacere.

Fork me on GitHub

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane. Microsoft MVP for Development Technologies dal 2018.

View all posts by Ryan →

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


Il periodo di verifica reCAPTCHA è scaduto. Ricaricare la pagina.

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.