estrarre immagini da un PDF

Naturalmente queste istruzioni starebbero meglio in ambiente Linux (dove nascono). Talvolta però l’uso di Windows diventa una necessità. Questo ormai non è un ostacolo per via delle caratteristiche multipiattaforma di questi programmi. Ma non perdiamoci in chiacchiere…

Xpdf è un visualizzatore e gestore open source per files Portable Document Format (PDF).

ImageMagick mette a disposizione una serie di strumenti per la gestione da riga di comando delle immagini.

Una volta installate queste utility è preferibile indicarne il persorso di ricerca nelle variabili di sistema (solo se stiamo lavorando con Windows).

A questo punto possiamo agire con:

$ pdfimages file.pdf .

In cui: file.pdf indica il file da cui tirar fuori le immagini, mentre “.” indica la directory in cui estrarle. Avremo così a disposizione immagini con estensione .ppm (Portable PixelMap) che andranno così convertite (in ambiente Windows):

C:\dir_delle_immagini\>for %1 in (*.ppm) do convert %1 %1.jpg

mini how-to cs-rcs

ComponentSoftware RCS (CS-RCS) è un potente ed economico sistema di controllo delle versioni per Windows (freeware ad uso personale) . Si basa su GNU RCS.

USO:

In Esplora risorse, selezionare il file di cui si vuole conservare traccia delle revisioni/versioni col tasto destro del mouse e fare click su “Add to RCS“.

Subito dopo è possibile effettuare un controllo dello stato di  acquisizione e, all’occorrenza, effettuare alcune operazioni dal pannello “Revision Manager” a cui si accede con il comando “Revision History…“:

Dal pannello “Revision Manager” è possibile compiere le seguenti operazioni:

  1. View Revision: Vedere la revisione già acquisita (questo non modificherà nè il contenuto del file originale nè la stessa revisione in esame, dato che essa sarà aperta in modalità sola lettura).

  2. Retrieve Revision…: Esportare lo stato di revisione selezionato in un nuovo file (con attributo di sola lettura) che conserverà il nome del file originale con l’aggiunta del numero di revisione selezionato.

  3. Compare revision…: Confrontare la revisione selezionata con il file originale (solo in caso di file in formato testo).

  4. Edit Description…: Cambiare la descrizione della revisione selezionata.

  5. Edit Symbolic name…: Attribuire/cambiare/cancellare il nome simbolico alla revisione.

Dal pannello “Edit Description…” è immediatamente possibile cambiare la descrizione della prima acquisizione.

Dopo aver effettuato la registrazione della revisione del file e dopo averlo eventualmente modificato, nel menu contestuale di Explorer si attiverà la possibilità di acquisire una nuova revisione: selezionare il file, cliccare col tasto destro del mouse e selezionare la dicitura “Check-in“.

Sarà così immediatamente attivata la finestra di immissione della descrizione e dei commenti:

Al successivo acceso al pannello “Revision Manager” avremo questo aspetto:

A questo punto dal pannello “Revision Manager” sarà possibile ottenere un report dell’elenco delle revisioni acquisite cliccando sul pulsante “Report…” che mostrerà il pannello “Revision History“:

Dal pannello “Revision History“, cliccando sul pulsante “Report…“, sarà richiesto un nome di file (è preferibile usare lo stesso nome del file in esame) in cui sarà conservato l’elenco degli stati di revisione in formato HTML che conserverà in una tabella, oltre al nome del file in esame completo del suo percorso di ricerca, il Revision Number  (numero di versione/revisione), il Symbolic Name (nome simbolico), la Check-in Date (data di acquisizione della versione/revisione), l’Author Name (nome di chi ha acquisito la version/revisione – solitamente il nome di chi ha modificato il file), la Description (descrizione immessa al momento dell’acquisizione della versione/revisione).

Spero di riuscire presto a rimpiazzarlo con TortoiseGit, l’interfaccia più cool per il controllo delle versioni (Git).

pdftotext per convertire un file formato PDF in ODS Calc LibreOffice

Discutendone con Bart, siamo inciampati in un file che, nonostante l’uso di pdfcrop, non produceva le righe/colonne che ci aspettavamo: siamo saltati direttamente a pdftotext che è più veloce ed efficace.

$ pdftotext -x 54 -y 100  -W 70 -H 686 input.pdf otput.txt

Dove: -x indica il numero di pixel dalla sinistra della pagina, -y  indica il numero di pixel dall’alto della pagina, -W e -H rispettivalemte la largezza e l’altezza in pixel del box da ritagliare, a partire dalla posizione -x -y già indicata.

Naturalmente l’output.txt è già in formato ASCII, quindi, a seconda dell’impostazione del suo contenuto, potrebbe essere necessario elaborare ancora con vim oppure semplicemente incollare in Calc LibreOffice.

Un esempio di regexp
/euro ([a-z]*\/[[0-9]*)
<die_z> :%s/.[0-9]./ciaociao/gc
<die_z> (la c fa sì che vim chieda conferma a ogni sostituzione)
<die_z> giuserpe: il ‘.’ che hai scritto è un ‘.’ letterale o sta per “qualsiasi carattere”?
<giuserpe> die_z: letterale
<die_z> giuserpe: allora intanto “escappalo” \.[0-9]\.
<die_z> altrimenti ti trova anche ?4_ con quella regex
<die_z> giuserpe: poi cosa devi fare?
<giuserpe> io faccio :%s\.[0-9]\./connonsocosa/g
<giuserpe> die_z: devo aggiungere uno ZERO
<giuserpe> \.ZERO[0-9]\.
<die_z> giuserpe: nelle regex puoi “marcare” parti del match tra () e poi “riusarle” con \1 \2 \3
<giuserpe> die_z: tradotto?
<die_z> giuserpe: quindi la regex di ricerca diventa \.\([0-9]\)\. e quella di sostituzione diventa \.0\1\.
<die_z> giuserpe: :%s/\.\([0-9]\)\./\.0\1\./gc (se non ho cannato a scrivere)
<giuserpe> fatto

backup con rsync sotto windows

Giusto per rimanere in allegria, anche per quest anno, puntualmente durante le ferie natalizie, non ho voluto farmi mancare il “brivido” della cancellazione accidentale dei dati.

Senz’altro posso dire che, con l’aumentare dell’esperienza, acquisisco sempre più sangue freddo. Ricordo che in passato, in preda al panico, sono riuscito solo a far danno su danno. Questa volta, quasi istintivamente, mi sono allontanato dal PC di almeno un metro e per qualche minuto.

Per saccheggiare i miei stessi dati, mi sono destreggiato in un rm /directory -rf in cui quella directory era il nome di un’intera partizione… E così ho buttato via qualcosa come 380Gb di dati di cui almeno 80Gb indispensabili (tutto ciò che mi riguarda tra lavori, foto e filmati da quando mi accostai al pc alla fine degli anni ’80).

In virtù del mio curriculum, avevo però organizzato altre due copie di questi dati. Ho, comunque, perso diversi indirizzi di posta elettrinca così come gli stessi file batch, sia per Linux che per Windows, che mi permettevano di tenere sempre aggiornato il mio backup.

E’ così, dopo 24 ore di meditazione, ho pensato di tenere sempre a portata di mano, sul solito HD usb non una ma bensì due partizioni “gemelle” di cui una nascosta, agendo nel registro di sistema: una sorta di raid casereccio in differita.

Intanto ho recuperato rsync.exe come indicato in Rsync for Windows. Mi sono, però limitato a prendere solo il minimo indispensabile da CygWin e cioè:

  •  rsync.exe
  •  cygwin1.dll
  •  cygiconv-2.dll

Ho poi compilato un file batch di nome disk_sincro.bat così:

 rsync -uva --fake-super --delete-after --progress /cygdrive/w/ /cygdrive/v 

In modo che, avviandolo, tutto il contenuto del drive w: (la partizione visibile) venga riversato in v: (la partizione non visibile da esplora risorse).

Ho prodotto anche un file batch che copi in una directory, la più remota possibile del PC, solo quei dati che ritengo vitali, in questa maniera:

rsync -uva --fake-super --delete --log-file=rsync_error.log /cygdrive/w/dati /cygdrive/c/COPIE_BACKUP

Infine ho messo il tutto in un’unica directory da cui, di volta in volta, faccio partire la procedura che mi interessa.

Naturalmente ho avuto premura di preparare gli equivalenti script bash per Linux.