Table of Contents
MediaWiki - Problema con thumbnail PDF
Quando si fa l'upload di un documento PDF, vengono generate delle miniature di tutte le pagine del documento. Il meccanismo abbastanza complesso richiede in generale la presenza sul server dei seguenti comandi:
- convert - Convertitore tra formati, fornito dal pacchetto Debian imagemagick-6.q16.
- pdfinfo - Fornisce informazioni su un file PDF, fornito dal pacchetto Debian poppler-utils.
- gs - Interprete PS e PDF, fornito dal pacchetto Debian ghostscript.
Le impostazioni relative in LocalSettings.php sono:
$wgEnableUploads = true; $wgUseImageMagick = true; $wgImageMagickConvertCommand = "/usr/bin/convert"; $wgGenerateThumbnailOnParse = false; $wgThumbnailScriptPath = "{$wgScriptPath}/thumb.php";
Al momento dell'upload del documento PDF, ne viene fatto il parsing e la generazione delle miniature. Se tutto funziona è possibile ottenere la miniatura di una singola pagina del documento semplicemente chiamando un URL del tipo:
https://www.example.org/wiki/thumb.php?f=Documento.pdf&width=423&page=4
Il nome (Documento.pdf nell'esempio) è quello che risulta nel wiki, senza percorso.
Questo meccanismo tuttavia non funziona se la directory images/thumb/X/YY/Documento.pdf/ non è stata creata in precedenza. In quella directory vengono create tutte le miniature delle varie pagine e alla risoluzione richiesta per quel singolo file.
Se la directory non esiste oppure c'è qualche altro problema, la richiesta della miniatura fallisce con il messaggio di errore:
Errore nella creazione della miniatura: No path supplied in thumbnail object
Correggere i matadata
In alcuni casi il problema potrebbe riguardare i metadati del file: la situazione sospetta può essere evidenziata dalla pagina-articolo associata al documento PDF (ad esempio File:Documento.pdf), se in quella pagina viene riportata una dimensione di 0 × 0 pixel allora vuol dire che c'è stato un problema durante l'upload e il successivo parsing del file.
In questo caso è utile eseguire lo script di manutenzione refreshImageMetadata.php. È necessario eseguirlo con i permessi del server web (www-data in Debian), ad esempio partendo dall'utente root:
su - www-data -s /bin/bash cd /var/www/html/www.example.org/wiki/ php ./maintenance/refreshImageMetadata.php --force
Nel mio caso questo script è stato risolutivo. Vedere la pagina di manuale dello script per eventuali parametri da passare (ad esempio dovrebbe essere possibile restringere l'azione ai file PDF e non a tutte le immagini).
Un altro script di manutenzione, anch'esso da eseguire come www-data, è rebuildImages.php:
php ./maintenance/rebuildImages.php
Purge della cache
In alcune circostanze può essere utilie l'azione di Purge sulla cache della pagina; è sufficiente richiamare l'URL circa in questo modo:
https://www.example.org/wiki/index.php?title=File:Documento.pdf&action=purge