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
doc:appunti:prog:screen2pdf [2021/01/09 11:43] – [Come salvare in PDF un libro da Google Libri] niccolodoc:appunti:prog:screen2pdf [2023/01/23 10:35] (current) – [Ritagliare i bordi inutili] niccolo
Line 1: Line 1:
 ====== Come salvare in PDF un libro da Google Libri ====== ====== 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.
Line 26: 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 64: Line 68:
 #!/bin/sh #!/bin/sh
 mkdir cropped mkdir cropped
-find . -maxdepth 1 -type f -name "*.png" | while read file do+find . -maxdepth 1 -type f -name "*.png" | while read file; do 
-    convert $file -crop '1000x1414+120+180' cropped/$file+    convert $file -strip -crop '1000x1414+120+180' cropped/$file
 done done
 </code> </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.1610189018.txt.gz · Last modified: 2021/01/09 11:43 by niccolo