la stada più documentata è l'uso di imagemagick.
sudo apt-get install imagemagick
convert -thumbnail 300x300 test.pdf test.png
convert -thumbnail 300x300 test.pdf[0] test.png
massimo santi nel suo blog
propone il comando per estrarre la thubnail di una intera cartella di pdf
FOR %i IN (*.pdf) DO convert -thumbnail 30000@ "%i"[0] -strip -quality 95 PNG8:"%i".png
purtroppo la versione 6.3.7 che viene installata attualmente non funziona correttamente, provabilmente un bug.
la seconda possibilità prevede l'uso del programma GhostScript.
l'ottimo Jed’s fridge nel suo blog condivide uno script che fa uso di gs
allo stesso scopo.
aggiunto il parameto necessario per convertire solo la prima pagina lo script fa esattamente quello che cercavo
#!/bin/bash
if [ $# -ne 2 ];then
echo “Usage: $0 target.pdf outfile”
exit
fi
TARGET=$1
# -dFirstPage=1 -dLastPage=1 => serve a convertire solo la prima pagina!
#-sDEVICE=png16m
OUTFILE=$2
gs \
-dSAFER \
-dBATCH \
-dNOPAUSE \
-sDEVICE=jpeg \
-r150 \
-dTextAlphaBits=4 \
-dGraphicsAlphaBits=4 \
-dMaxStripSize=8192 \
-dFirstPage=1 \
-dLastPage=1 \
-sOutputFile=${OUTFILE}_%d.jpg \
${TARGET}
il passo successivo è scrivere il codice php necessario a sfruttare questa potente applicazione nel vostro progetto:
la mia prima proposta è molto semplice
function pdf_get_thumbnail($pdf){
$pdf = escapeshellarg($pdf);
$OUTFILE = $pdf.'.jpg';
$cmd = "gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -r150 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dMaxStripSize=8192 -dFirstPage=1 -dLastPage=1 -sOutputFile=$OUTFILE $pdf";
exec($cmd, $output, $return_var );
return ( $return_var == 0 ? true : false)
}
$output = pdf_get_thumbnail($TARGET);
echo "
$output";
a seconda delle esigenze applicative è possibile gestire ulteriori parametri, come il percorso
e il nome e il formato del file in output, le dimensioni dell'anteprima e molto altro.
man gs
per ulteriori ispirazioni.
0 commenti:
Posta un commento