User Tools

Site Tools


doc:appunti:prog:screen2pdf

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
doc:appunti:prog:screen2pdf [2021/01/09 11:24] – [Programma di cattura schermata] niccolodoc:appunti:prog:screen2pdf [2023/01/23 10:32] – [Schermo virtuale] niccolo
Line 1: Line 1:
-====== Come salvare un libro da Google Libri in PDF ======+====== Come salvare in PDF un libro da Google Libri ======
  
-Se avete acquistato un libro con **Google Libri** avete **molte meno libertà** di quelle che avete quando acquistate un libro di carta. Tanto per cominciare potete leggerlo **solo con il programma che ha deciso Google**: sul telefonino esiste l'app **Play Libri**, sul desktop potete leggerlo nel browser dal sito Google. Impossibile farne una copia PDF per leggerlo ad esempio in un ebook reader oppure per poterlo stampare. E se il vostro **account Google smette di funzionare**? Il libro scompare. E se volete **lasciare in eredità** i vostri libri ai vostri figli? Scordatevelo.+Se avete acquistato un libro con **Google Libri** avete **molte meno libertà** di quelle che avete quando acquistate un libro di carta. Tanto per cominciare potete leggerlo **solo con il programma che ha deciso Google**: sul telefonino esiste l'app **[[https://play.google.com/store/apps/details?id=com.google.android.apps.books&gl=IT|Google Play Libri]]**, sul desktop potete leggerlo nel browser dal **sito Google**. Impossibile farne una copia PDF per leggerlo ad esempio in un ebook reader oppure per poterlo stampare. E se il vostro **account Google smette di funzionare**? Il libro scompare. E se volete **lasciare in eredità** i vostri libri ai vostri figli? Scordatevelo.
  
-Con questa ricetta è possibile salvare un libro in PDF **catturando le schermate dal computer**È una soluzione di **compromesso** al ribasso: il file risultante conterrà le **immagini delle pagine**, quindi **il testo non è cercabile né esportabile** in qualche formato modificabile. Il file risultante sarà di **dimensioni importanti** (circa 20 Mb per 100 pagine). L'eventuale indice deve essere ricostruito mano.+{{google2pdf.png?512|Da Google Libri PDF}}
  
-La ricetta è eseguibile facilmente su un computer desktop **GNU/Linux**.+Con questa ricetta è possibile salvare un libro in PDF **catturando le schermate dal computer**. È una soluzione di **compromesso al ribasso**: il file risultante conterrà le **immagini delle pagine**, quindi **il testo non è cercabile né esportabile** in qualche formato modificabile. Il file risultante sarà di **dimensioni importanti** (circa 20 Mb per 100 pagine). L'eventuale indice deve essere ricostruito a mano. 
 + 
 +La ricetta un po' **da smanettoni** è eseguibile facilmente su un computer desktop **GNU/Linux**, la sua caratteristica è di poter scegliere la qualità delle immagini (risoluzione in pixel) a piacimento. C'è un po' di **lavoro manuale** da fare (premere due tasti per ogni pagina) e poi da **eseguire degli script** per comporre le singole immagini un un solo documento PDF.
  
   - Impostare una **risoluzione virtuale elevata**. Ciò consente di simulare un monitor ad esempio di 1300x2000 pixel (notare il formato portrait), in modo che il browser visualizzi una pagina intera del libro a risoluzione elevata.   - Impostare una **risoluzione virtuale elevata**. Ciò consente di simulare un monitor ad esempio di 1300x2000 pixel (notare il formato portrait), in modo che il browser visualizzi una pagina intera del libro a risoluzione elevata.
   - Installare un **programma di cattura schermo** scriptabile; deve salvare la schermata senza richiedere interazione.   - Installare un **programma di cattura schermo** scriptabile; deve salvare la schermata senza richiedere interazione.
   - Assegnare una **scorciatoia da tastiera** al programma di cattura.   - Assegnare una **scorciatoia da tastiera** al programma di cattura.
 +  - **Acquisire** tutte le pagine.
   - **Ritagliare** le immagini rimuovendo i bordi inutili.   - **Ritagliare** le immagini rimuovendo i bordi inutili.
   - **Trasformare** le singole immagini nel documento PDF.   - **Trasformare** le singole immagini nel documento PDF.
Line 25: Line 28:
  
 Per tornare alla condizione normale è sufficiente ripetere il comando impostando la stessa risoluzione per **%%--mode%%** e **%%--panning%%**. Per tornare alla condizione normale è sufficiente ripetere il comando impostando la stessa risoluzione per **%%--mode%%** e **%%--panning%%**.
 +
 +**ATTENZIONE**: Quando si cambia risoluzione virtuale si deve **riavviare il programma Flameshot** in modo che la cattura della schermata avvenga per intero!
  
 ===== Programma di cattura schermata ===== ===== Programma di cattura schermata =====
Line 38: Line 43:
   * **Filename editor**: impostare il nome che avrà il file salvato, usare ad esempio **%%%F_%T%%** per utilizzare un timestamp comprensivo dei secondi.   * **Filename editor**: impostare il nome che avrà il file salvato, usare ad esempio **%%%F_%T%%** per utilizzare un timestamp comprensivo dei secondi.
   * **General**: Disabilitare lo **Show desktop notification**, che nel mio caso restano visualizzate troppo a lungo.   * **General**: Disabilitare lo **Show desktop notification**, che nel mio caso restano visualizzate troppo a lungo.
 +
 +Quindi si crea uno script che esegua il cattura schermo, io l'ho salvato in **$HOME/bin/cattura-schermo** e contiente:
 +
 +<code bash>
 +#!/bin/sh
 +flameshot full -p ~/Pictures
 +</code>
 +
 +Gli screenshot verranno salvati nella cartella **$HOME/Pictures/**.
 +
 +===== Assegnare un tasto scorciatoria =====
 +
 +Poiché utilizzo XFCE, ho eseguito **Settings** => **Keyboard** => **Application Shortcuts** ed ho creato un nuovo comando associando lo script al tasto **PrintScreen**.
 +
 +===== Acquisire le immagini di tutte le pagine =====
 +
 +A questo punto è possibile impostare il **browser a tutto schermo** (virtuale), aprire il libro sulla prima pagina e zoomare a **pagina intera**. Si potrà premere ripetutamente **PrintScreen** e **PagDown** per salvare tutte le pagine del libro. Fate trascorrere **almeno un secondo fra una pagina e l'altra**, in modo che il nome del file sia diverso dal precedente.
 +
 +===== Ritagliare i bordi inutili =====
 +
 +Utilizzando il comando **convert** fornito dal pacchetto **imagemagick-6.q16** è possibile ritagliare automaticamente i bordi inutili a tutte le immagini create. Ecco uno script facilmente adattabile alle proprie esigenze. Le dimensioni di crop (larghezza x altezza + sinistra + alto) si possono determinare aprendo una immagine in Gimp e utilizzando lo strumento //ritaglia//. In questo esempio tutte le immagini esistenti nella directory corrente verranno ritagliate e salvate nella sottodirectory **cropped**.
 +
 +<code bash>
 +#!/bin/sh
 +mkdir cropped
 +find . -maxdepth 1 -type f -name "*.png" | while read file do;
 +    convert $file -strip -crop '1000x1414+120+180' cropped/$file
 +done
 +</code>
 +
 +Se le immagini sono in bianco e nero (oppure pochi toni di grigio) è possibile risparmiare un po' di spazio usando una codifica a 4 bit (16 toni di grigio), aggiungendo le opzioni **''%%-depth 4 -colorspace gray -define png:color-type=0%%''** al comando **''convert''**. Il **color-type=0** per PNG significa greyscale e supporta il formato a 2, 3, 4, 8 o 16 bit, vedere **[[https://legacy.imagemagick.org/Usage/formats/#png_write|Imagemagick png_write]]**.
 +
 +===== Trasformare le immagini in PDF =====
 +
 +Ho utilizzato il comando **img2pdf** fornito dall'omonimo pacchetto Debian (oppure installabile con il sistema **[[wp>Pip_(package_manager)|pip]]**). Il programma consente di creare il PDF senza alterare le immagini originali, cioè queste vengono inserite nel PDF senza ricodificarle come invece farebbe il tool **convert**.
 +
 +Questa una ricetta molto semplice per creare il PDF, deve essere eseguito nella directory che contiene le immagini ritagliate:
 +
 +<code>
 +img2pdf --pagesize a4 --title "Titolo del libro" --author "Nome Cognome" *.png > libro.pdf
 +</code>
 +
 +===== Creazione di un indice =====
 +
 +Per aggiungere un **indice** al documento PDF è necessario creare un file che aggiunga ai metadati esistenti (titolo, autore, ecc.) un titolo e una pagina per ogni **bookmark**. Ad esempio si crea un file **pdf_info.txt** con:
 +
 +<code>
 +InfoBegin
 +InfoKey: Title
 +InfoValue: Titolo del libro
 +InfoBegin
 +InfoKey: Author
 +InfoValue: Nome Cognome
 +NumberOfPages: 184
 +
 +BookmarkBegin
 +BookmarkTitle: Capitolo 1
 +BookmarkLevel: 1
 +BookmarkPageNumber: 8
 +
 +BookmarkBegin
 +BookmarkTitle: Capitolo 2
 +BookmarkLevel: 1
 +BookmarkPageNumber: 43
 +</code>
 +
 +È possibile definire bookmark di primo livello, di secondo livello, ecc. Con il programma **pdftk** (fornito dal pacchetto Debian **pdftk-java**) è possibile creare un nuovo PDF aggiungendo le informazioni dell'indice:
 +
 +<code>
 +pdftk libro.pdf update_info pdf_info.txt output libro_index.pdf
 +</code>
 +
doc/appunti/prog/screen2pdf.txt · Last modified: 2023/01/23 10:35 by niccolo