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.

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.

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).

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.

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.

