====== 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 **[[https://www.mediawiki.org/wiki/Manual:RefreshImageMetadata.php|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, è **[[https://www.mediawiki.org/wiki/Manual:RebuildImages.php|rebuildImages.php]]**:
php ./maintenance/rebuildImages.php
===== Purge della cache =====
In alcune circostanze può essere utilie l'azione di **[[https://www.mediawiki.org/wiki/Manual:Purge|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