TiTiNoNero dice cose_

Novità!!! Visita la sezione Garden! Buona lettura & buon ascolto!

GhostScript e Stirling PDF: manipolare PDF in sicurezza

Chi non ha mai avuto la necessità di manipolare un file PDF? Magari ti serviva unire due PDF in uno solo, oppure estrarne una o due pagine appena, oppure volevi aggiungere un watermark ad un documento scansionato senza troppe acrobazie da cartoleria…

Foto che ritrae una pagina stampata, poggiata su un tavolo in penombra. Si intravede la parola 'Preface'
Photo by Bruno Fernandes on Unsplash

Oggi, ad esempio, ho dovuto trovare il modo, da riga di comando e in ambiente isolato dalla rete, per trasformare un PDF contenente un rapporto di misura, generato direttamente da uno strumento di laboratorio, in un file di testo che fosse “parsabile” valutabile programmaticamente da un sistema LIMS.

GhostScript

La soluzione più ovvia e rapida è stata quella di rivolgermi a Ghostscript, che per inciso è il motore che genera PDF nella quasi totalità dei software che generano PDF, o che emulano stampanti PDF, in ambiente Windows.

Per chi non lo conoscesse, Ghostscript è un interprete Postscript, un linguaggio sviluppato da Adobe per descrivere e automatizzare pagine di documenti elettronici. PDF e Postscript sono cugini, reciprocamente convertibili, con la differenza che il PDF non contiene il subset di caratteristiche di programmazione presenti sul formato PS. Ghostscript è rilasciato sia con una licenza commerciale che con una licenza open source, entrambe mantenute dalla società Artifex.

GhostScript, in versione AGPL, è disponibile a questo indirizzo: https://www.ghostscript.com/releases/gsdnld.html.

Ma perché dovresti sbatterti con un nuovo strumento esoterico per qualche funzione che ti potrebbe servire sì e no tre o quattro volte nella vita?

Semplicemente perché:

  • puoi;
  • hai bisogno di automatizzare dei workload e ti serve uno strumento da riga di comando completo e fatto strabene;
  • non devi caricare i tuoi documenti su servizi online malfamati;
  • non devi caricare i tuoi documenti sul cloud supersicuro di qualcun altro;
  • non devi installare programmi con licenze molto costose per due comandi banalissimi;
  • non devi installare programmi da Softonic;

Ad ogni modo, se cercavi solo un visualizzatore con tante funzioni di annotazione e editing di base, che sia open source e che giri su Windows, non ho ancora trovato nulla di meglio di Okular… provalo, ne vale la pena e i tuoi file restano al sicuro!

Per tornare a noi, devo ammettere che la curva di apprendimento del linguaggio PS è piuttosto ripida, e non ho trovato moltissimo aiuto nella comunità online, probabilmente a causa del fatto che esistono prodotti commerciali che generano file PS senza troppo sforzo… ammetto che ci sono cose che non mi sono ancora molto chiare, ma sono riuscito a risolvere alcuni casi d’uso che per me sono piuttosto tipici, e li condivido più che volentieri.

Se anzi qualcuno con più esperienza di me riuscisse a suggerirmi la soluzione per l’ultimo caso, che lascio irrisolto, gli sarei enormemente grato…

In ogni caso, se preferisci, sono pubblicati senza troppi fronzoli su Codeberg

Convertire un PDF in un TXT (mantenendo il layout)

gswin64c.exe -sDEVICE=txtwrite -dTextFormat=2 -o output.txt input.pdf

Unire due o più file PDF

gswin64c.exe -dNOPAUSE -sDEVICE=pdfwrite -o combined.pdf -dBATCH 1.pdf 2.pdf 3.pdf

“Smontare” pagina per pagina un file PDF

gswin64c.exe -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -o output.%d.pdf input.pdf

Estrarre un intervallo di pagine da un file PDF

gswin64c.exe -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -dFirstPage=2 -dLastPage=5 -o output.pdf input.pdf

Convertire un file PDF in un file PS

gswin64c.exe -dNOPAUSE -dBATCH -sDEVICE=ps2write -o output.ps input.pdf

Aggiungere un watermark su ogni pagina di un file PDF

Step 1: creare un file PS con il watermark desiderato

File “watermark.ps”:

<< /EndPage {
   2 eq { pop false }
   {
      gsave
      /Helvetica findfont 36 scalefont setfont
      newpath .80 setgray 25 25 moveto (Watermark Text) show
      grestore true
   } ifelse
} bind >> setpagedevice

dove:

  • /Helvetica findfont è il font del watermark
  • 36 scaledfont è la dimensione del testo
  • .80 setgray è la tonalità di grigio del testo
  • 25 25 moveto sono le coordinate di inizio watermark
  • (Watermark Text) (escluse le parentesi) è il testo del watermark

Step 2: sovrapporre il watermark alle pagine del file PDF

gswin64c.exe -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -o watermarked.pdf watermark.ps input.pdf

Aggiungere un watermark grafico (svg, png, jpg) su ogni pagina di un file PDF

Su questo ho trovato qualche esempio, ma non sono stato in grado di ottenere nulla di utilizzabile… Se sai suggerirmi, sono tutt’orecchie!

Edit 2024-03-27: aggiunta la sezione seguente

Stirling PDF

Dopo aver pubblicato questo post, come era da aspettarsi, mi è stato segnalato il progetto di Stirling PDF. Per la verità già lo conoscevo e pianificavo di raccontarlo in un post separato tra qualche settimana. Volevo provarlo bene, soprattutto l’installazione.

Stirling PDF è un progetto Open-Source che rende disponibile per l’installazione su un PC, o su un server in hosting, di una applicazione web che racchiude una quantità davvero assurda di funzioni per manipolare i PDF, incluse quelle indicate sopra. Tutte queste funzioni vengono eseguite localmente o sul server dove è installata l’applicazione e dunque nessun dato viene trasmesso ad altri server.

Schermata dell'applicazione Stirling-PDF

A differenza di GhostScript, che può essere utile per un impiego saltuario con una installazione semplicissima, Stirling PDF richiede diverse accortezze e qualche competenza in più per l’installazione, anche solo per uso offline sul vostro PC locale, e si pone come una ottima soluzione per piccole realtà aziendali, professionisti o privati che ne facciano un uso intensivo. Se sei alle prime armi ti raccomando l’installazione tramite Docker, in quanto più semplice rispetto alla gestione delle numerosissime dipendenze.

Puoi trovare il sorgente e le istruzioni qui: https://github.com/Stirling-Tools/Stirling-PDF, e puoi anche provare le varie funzioni su una istanza italiana a questo indirizzo: https://pdf.serviziliberi.it/ (questa pagina è gestita dalla Italian Linux Society, sezione di Este, che è una associazione senza scopo di lucro che offre questo servizio gratuitamente, senza profilazione né pubblicità), ma raccomando di non caricare documenti riservati o che contengano informazioni sensibili.

Commenti

Puoi inviare un commento su questa pagina compilando il modulo seguente. Il commento verrà pubblicato una volta approvato.

You have WEI running