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:

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