<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Aldolat.it &#8212; Post con tag Sfondo</title>
        <link>https://www.aldolat.it/tags/sfondo/</link>
        <description>Ultimi post pubblicati nel tag Sfondo &#8212; aldolat.it</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>it</language>
        <managingEditor>aldolat@gmail.com (Aldo Latino)</managingEditor>
        <webMaster>aldolat@gmail.com (Aldo Latino)</webMaster>
        <copyright>Creative Commons BY-SA 4.0</copyright>
        <lastBuildDate>Sun, 14 Jun 2026 19:12:47 +0200</lastBuildDate>
        <atom:link href="https://www.aldolat.it/tags/sfondo/index.xml" rel="self" type="application/rss+xml" />
        <item>
            <title>Rimuovere oggetti da PDF con Inkscape via terminale</title>
            <link>https://www.aldolat.it/posts/2025/rimuovere-oggetti-pdf-inkscape-terminale/</link>
            <pubDate>Wed, 06 Aug 2025 09:26:12 +0200</pubDate>
            <author>aldolat@gmail.com (Aldo Latino)</author>
            <guid>https://www.aldolat.it/posts/2025/rimuovere-oggetti-pdf-inkscape-terminale/</guid>
            <description>Avete uno o mille PDF e in tutti ci sono uno o più livelli e oggetti che bisogna rimuovere. Una soluzione possibile è usare Inkscape, ma da terminale. In questo post racconto come, grazie a un piccolo script, siamo riusciti a portare a termine un&#39;operazione che altrimenti avrebbe richiesto un sacco di tempo.</description>
            <content:encoded>Avete uno o mille PDF e in tutti ci sono uno o più livelli e oggetti che bisogna rimuovere. Una soluzione possibile è usare Inkscape, ma da terminale. In questo post racconto come, grazie a un piccolo script, siamo riusciti a portare a termine un&#39;operazione che altrimenti avrebbe richiesto un sacco di tempo.&lt;p&gt;* * *&lt;/p&gt;&lt;p class=&#34;dc3&#34;&gt;C&lt;span class=&#34;allsc&#34;&gt;i è capitato&lt;/span&gt; in questi giorni di mandare in stampa&#xA;presso un servizio specializzato online un &lt;span class=&#34;allsc&#34;&gt;PDF&lt;/span&gt; con&#xA;alcuni appunti. Così com&amp;rsquo;era, però, il file non veniva accettato perché&#xA;presentava uno sfondo giallo chiaro su tutte le pagine. O, per meglio dire, la&#xA;stampa sarebbe costata di più. Poiché non posso pubblicare lo screenshot di una&#xA;pagina reale, vi basti questa ricostruzione di fantasia che però rende l&amp;rsquo;idea di&#xA;cosa avevamo davanti:&lt;/p&gt;&#xA;&lt;figure class=&#34;aligncenter color nobg&#34;&gt;&lt;img src=&#34;https://www.aldolat.it/images/2025/08/pdf-bg.webp&#34;&#xA;&#x9;&#x9;&#x9;alt=&#34;Figura 1. Un esempio di pagina con lo sfondo giallo chiaro da rimuovere.&#34; width=&#34;690&#34; height=&#34;431&#34;&gt;&lt;figcaption&gt;&#xA;&#x9;&#x9;&#x9;&lt;p&gt;&lt;em&gt;Figura 1&lt;/em&gt;. Un esempio di pagina con lo sfondo giallo chiaro da rimuovere.&lt;/p&gt;&#xA;&#x9;&#x9;&lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;Il &lt;span class=&#34;allsc&#34;&gt;PDF&lt;/span&gt; è composto da 358 pagine: come fare per rimuovere&#xA;quello sfondo colorato, lasciando intatto tutto il resto?&lt;/p&gt;&#xA;&lt;p&gt;La prima soluzione che mi è venuta in mente era di estrarre singolarmente le&#xA;pagine dal &lt;span class=&#34;allsc&#34;&gt;PDF&lt;/span&gt; e darle in pasto a ImageMagick,&#xA;dicendogli di applicare una correzione dei livelli di colore in modo da&#xA;eliminare lo sfondo. Ma abbiamo scartato subito questa ipotesi perché il file&#xA;risultante, composto interamente da immagini raster, sarebbe stato enorme.&lt;/p&gt;&#xA;&lt;p&gt;Mi viene un&amp;rsquo;idea. Se i file sono vettoriali (cosa che ancora non sapevamo) e se&#xA;lo sfondo giallo chiaro sta su un suo livello separato o, per meglio dire, è un&#xA;oggetto separato da tutti gli altri, forse possiamo eliminarlo. Apriamo una&#xA;pagina con Inkscape e scopriamo che i file sono effettivamente vettoriali e che&#xA;lo sfondo è un oggetto separato, chiamato &lt;code&gt;path1&lt;/code&gt; (vedi fig. 2). Ma non solo:&#xA;scopriamo anche che i quadretti (che avremmo desiderato pure togliere) stanno&#xA;tutti assieme in un gruppo chiamato &lt;code&gt;g27514&lt;/code&gt;, quindi un facile obiettivo per la&#xA;rimozione di massa.&lt;/p&gt;&#xA;&lt;figure class=&#34;aligncenter color nobg&#34;&gt;&lt;img src=&#34;https://www.aldolat.it/images/2025/08/oggetti-inkscape-pag-62.webp&#34;&#xA;&#x9;&#x9;&#x9;alt=&#34;Figura 2. I due oggetti di pagina 62, indicati dalla freccia, contenenti lo sfondo e i quadretti. In Inkscape è attualmente aperto un file PDF composto da due pagine.&#34; width=&#34;690&#34; height=&#34;478&#34;&gt;&lt;figcaption&gt;&#xA;&#x9;&#x9;&#x9;&lt;p&gt;&lt;em&gt;Figura 2&lt;/em&gt;. I due oggetti di pagina 62, indicati dalla freccia, contenenti lo sfondo e i quadretti. In Inkscape è attualmente aperto un file PDF composto da due pagine.&lt;/p&gt;&#xA;&#x9;&#x9;&lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;Questi nomi di oggetti, per ovvie ragioni, non vengono mantenuti se apriamo con&#xA;Inkscape più pagine del &lt;span class=&#34;allsc&#34;&gt;PDF&lt;/span&gt;. Nella figura 2, ad esempio,&#xA;abbiamo aperto con Inkscape due pagine, cioè la 62 e la 63: come si vede&#xA;dall&amp;rsquo;immagine, lo sfondo della prima pagina (la 62) si chiama &lt;code&gt;path1&lt;/code&gt;, così come&#xA;il gruppo dei quadretti si chiama &lt;code&gt;g27514&lt;/code&gt;, ma non così dalla seconda pagina (la&#xA;63, vedi fig. 3) in poi, perché questi nomi sono, nel nostro caso, anche degli&#xA;&lt;span class=&#34;allsc&#34;&gt;ID&lt;/span&gt; che devono identificare univocamente un oggetto.&lt;/p&gt;&#xA;&lt;figure class=&#34;aligncenter color nobg&#34;&gt;&lt;img src=&#34;https://www.aldolat.it/images/2025/08/oggetti-inkscape-pag-63.webp&#34;&#xA;&#x9;&#x9;&#x9;alt=&#34;Figura 3. I due stessi oggetti ma di pagina 63, con nomi diversi rispetto alla pagina precedente.&#34; width=&#34;690&#34; height=&#34;478&#34;&gt;&lt;figcaption&gt;&#xA;&#x9;&#x9;&#x9;&lt;p&gt;&lt;em&gt;Figura 3&lt;/em&gt;. I due stessi oggetti ma di pagina 63, con nomi diversi rispetto alla pagina precedente.&lt;/p&gt;&#xA;&#x9;&#x9;&lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;Proviamo quindi a dividere il file &lt;span class=&#34;allsc&#34;&gt;PDF&lt;/span&gt; di 358 pagine in&#xA;tanti file quante sono le sue pagine e a verificare se gli &lt;span class=&#34;allsc&#34;&gt;ID&lt;/span&gt; dello sfondo e del gruppo vengono sempre mantenuti: sì, vengono&#xA;mantenuti! A qusto punto siamo pronti per mettere all&amp;rsquo;opera Inkscape, ma non per&#xA;via grafica, che comporterebbe un sacco di tempo e un incredibile mal di testa,&#xA;ma da terminale.&lt;/p&gt;&#xA;&lt;h2 id=&#34;estrazione-delle-pagine-dal-pdf&#34;&gt;Estrazione delle pagine dal pdf&lt;/h2&gt;&#xA;&lt;p&gt;La prima operazione è, quindi, quella di suddividere l&amp;rsquo;intero &lt;span class=&#34;allsc&#34;&gt;PDF&lt;/span&gt; in 358 file, cioè un file per ogni pagina:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pdftk input.pdf burst&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;rimozione-degli-oggetti&#34;&gt;Rimozione degli oggetti&lt;/h2&gt;&#xA;&lt;p&gt;Mettiamo ora mano alla creazione di uno script Bash semplicissimo che processi&#xA;tutti i &lt;span class=&#34;allsc&#34;&gt;PDF&lt;/span&gt; di una directory mediante Inkscape. Ci siamo&#xA;dovuti spulciare il manuale di Inkscape (&lt;code&gt;man inkscape&lt;/code&gt;) per capire quali&#xA;comandi (che lui chiama &lt;em&gt;actions&lt;/em&gt;) potevano fare al caso nostro. Quello che è&#xA;venuto fuori è questo script:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight wrap&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Script per rimuovere oggetti da un PDF tramite ID.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OBJECT_TO_REMOVE1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;path1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OBJECT_TO_REMOVE2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;g27514&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p modified&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; pdf in *.pdf&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Processo: &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$pdf&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  inkscape --actions&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;select-by-id:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OBJECT_TO_REMOVE1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;13&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;  delete-selection;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;14&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;  select-by-id:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OBJECT_TO_REMOVE2&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;  delete-selection;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;  export-filename:modified/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$pdf&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;  export-do&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$pdf&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &amp;gt; /dev/null 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Completato: modified/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$pdf&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Dopo aver definito gli &lt;span class=&#34;allsc&#34;&gt;ID&lt;/span&gt; dei due oggetti da rimuovere&#xA;(righe 4 e 5), lo script, per ogni &lt;span class=&#34;allsc&#34;&gt;PDF&lt;/span&gt; che trova, esegue&#xA;il comando &lt;code&gt;inkscape&lt;/code&gt; con alcune azioni in sequenza:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;seleziona il primo oggetto per &lt;span class=&#34;allsc&#34;&gt;ID&lt;/span&gt;;&lt;/li&gt;&#xA;&lt;li&gt;elimina l&amp;rsquo;oggetto selezionato;&lt;/li&gt;&#xA;&lt;li&gt;seleziona il secondo oggetto per &lt;span class=&#34;allsc&#34;&gt;ID&lt;/span&gt;;&lt;/li&gt;&#xA;&lt;li&gt;elimina l&amp;rsquo;oggetto selezionato;&lt;/li&gt;&#xA;&lt;li&gt;imposta il nome del file da esportare;&lt;/li&gt;&#xA;&lt;li&gt;esegue l&amp;rsquo;esportazione.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Infine, abbiamo anche reindirizzato l&amp;rsquo;output su &lt;code&gt;/dev/null&lt;/code&gt; per evitare di&#xA;vedere un sacco di righe inutili al nostro scopo e, una volta salvato il file,&#xA;stampa a video il messaggio di conclusione per quel singolo file.&lt;/p&gt;&#xA;&lt;p class=&#34;newpar&#34;&gt;Questo è il risultato di una pagina dopo l&amp;rsquo;esecuzione dello script:&lt;/p&gt;&#xA;&lt;figure class=&#34;aligncenter color nobg&#34;&gt;&lt;img src=&#34;https://www.aldolat.it/images/2025/08/pdf-nobg.webp&#34;&#xA;&#x9;&#x9;&#x9;alt=&#34;Figura 4. Un esempio di pagina senza lo sfondo giallo né i quadretti.&#34; width=&#34;690&#34; height=&#34;431&#34;&gt;&lt;figcaption&gt;&#xA;&#x9;&#x9;&#x9;&lt;p&gt;&lt;em&gt;Figura 4&lt;/em&gt;. Un esempio di pagina senza lo sfondo giallo né i quadretti.&lt;/p&gt;&#xA;&#x9;&#x9;&lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;h2 id=&#34;riunione-finale-delle-pagine-in-un-unico-file&#34;&gt;Riunione finale delle pagine in un unico file&lt;/h2&gt;&#xA;&lt;p&gt;Per riunire, alla fine, tutti i &lt;span class=&#34;allsc&#34;&gt;PDF&lt;/span&gt; basta dare:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pdftk modified/*.pdf cat output pdf_finale.pdf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr class=&#34;decorative&#34;&gt;&#xA;&#xA;&lt;p&gt;Con poche righe di Bash e gli strumenti giusti, abbiamo risolto un problema&#xA;concreto in poco tempo: è stata necessaria un&amp;rsquo;ora per il mio vecchissimo PC per&#xA;fare questo lavoro. Il &lt;a href=&#34;https://www.aldolat.it/tags/terminale/&#34;&gt;terminale&lt;/a&gt;, ancora una volta, si&#xA;dimostra uno strumento insostituibile per chi lavora con tanti file. E ancora,&#xA;dopo vent&amp;rsquo;anni d&amp;rsquo;uso di Linux, riesco a meravigliarmi per quello che abbiamo a&#xA;disposizione!&lt;/p&gt;&#xA;&lt;p&gt;L&#39;articolo &lt;a href=&#34;https://www.aldolat.it/posts/2025/rimuovere-oggetti-pdf-inkscape-terminale/&#34;&gt;Rimuovere oggetti da PDF con Inkscape via terminale&lt;/a&gt; è uno scritto di &lt;a href=&#34;https://www.aldolat.it/&#34;&gt;aldolat.it&lt;/a&gt;. Rispettane le &lt;a href=&#34;https://www.aldolat.it/info/#licenza&#34;&gt;condizioni di licenza&lt;/a&gt;.&lt;/p&gt;</content:encoded>
        </item>
    </channel>
</rss>
