domenica 7 ottobre 2012

Leggere fumetti sul Kindle



Ho comprato un Kindle touch.

Come chiunque puo' immaginare ora il problema e' la conversione da un formato ad un altro leggibile dal Kindle.

A tal fine c'e' calibre.

Il mio problema e' il seguente: ho un fumetto in pdf. 100 pagine per 55 mega.

Chiaramente non posso inviarlo al mio indirizzo kindle, viste le dimensioni del file.

Procedura un po laboriosa, ma funzionante:

  1. passo. Togliere le eventuali pagine che non mi serviranno (pubblicita'). Per questo ho usato pdftk. Ci sono anche software grafici: pdfshuffle ecc. ecc.
  2.   passo: Ridurre i bordi. A tal fine ho usato briss. Questo software molto semplice nell'uso automaticamente predispone il taglio. Quando ho caricato il file gli ho detto di trattare diversamente alcune pagine, da pag 1 a pag 4 e poi pag 126. Il file da pag 5 a pag 125 componeva le pagine in modo molto sistematico: quelle dispari decentrate verso sx mentre quelle pari lo erano verso dx. Briss ha automaticamente aggiustato i parametri per aver il miglior taglio possibile. Pertanto all'inizio ho detto di trattare le altre singolarmente.
  3.   passo. A questo punto il file pesava 54 M. Per comprimerlo ho usato una procedura descritta qui. che riporto per comodita'
sudo apt-get install poppler-utils ghostscript

 e poi, in un file, chiamiamolo pdfopt.sh, si inserisce il seguente codice

#!/bin/bash

DPI=150
PDF_DESTINATION=""

help() {
echo "optimize_pdf help"
echo "-h : show this help"
echo "-d : (optional) output pdf document resolution, by default : 150"
echo "-s : pdf source file, this file must exist"
echo "-o : pdf output file"
}

full_path() {
if [ -z $1 ]; then
exit;
else
if [ `expr substr ${1:-a} 1 2` != "/" ]; then
FULL_FILE=`pwd`"/"$1
fi
fi
echo $FULL_FILE
}

isNumeric(){ echo "$@" | grep -q -v "[^0-9]" ;}

while getopts "s:o:d:h" flag
do
case $flag in
#Source : source file
"s")
PDF_FILE=`full_path $OPTARG`
if [ ! -e $PDF_FILE ]; then
echo "Please provide a valid source file"
exit=1
fi
;;
#Output : output file
"o")
PDF_DESTINATION=$OPTARG
;;
#Dpi : desired resolution
"d")
if [ -z `isNumeric $OPTARG` ]; then
DPI=$OPTARG
else
echo "Please provide a numeric value for your DPI"
exit=1
fi
;;
"h")
exit=1
;;
esac
done

#Is there a target file?
if [ -z $PDF_DESTINATION ]; then
echo "Please provide a file name for output"
exit=1
fi

#At least one error, we're not going any further
if [ $exit ]; then
help
exit
fi

pdftops \
-paper match \
-nocrop \
-noshrink \
-nocenter \
-level3 \
-q \
"$PDF_FILE" - \
| ps2pdf14 \
-dEmbedAllFonts=true \
-dUseFlateCompression=true \
-dOptimize=true \
-dProcessColorModel=/DeviceRGB \
-dUseCIEColor=true \
-r72 \
-dDownsampleGrayImages=true \
-dGrayImageResolution=$DPI \
-dAutoFilterGrayImages=false \
-dGrayImageDownsampleType=/Bicubic \
-dDownsampleMonoImages=true \
-dMonoImageResolution=$DPI \
-dMonoImageDownsampleType=/Bicubic \
-dDownsampleColorImages=true \
-dColorImageResolution=$DPI \
-dAutoFilterColorImages=false \
-dColorImageDownsampleType=/Bicubic \
-dPDFSETTINGS=/prepress \
- "$PDF_DESTINATION"

al file gli si danno i permessi di esecuzione

chmod a+x pdfopt.sh

dopo di che lancio il mio comando

pdfopt.sh -s in.pdf -o out.pdf

 4.  passo. Ora il mio file pesa solo 13 M. Ma sono ricomparsi i bordi.
Per tagliarli uso nuovamente briss come nel punto 2.


Appena vedo il fumetto sul mio kindle vi faccio sapere com'e' il risultato.