Voici des solutions pour afficher le nombre de pages et le poids d’un fichier document PDF en PHP, avec WordPress, dans le format utilisé par Toolset pour utiliser ces fonctions en tant que shortcode Toolset :
function sizefile_func( $atts, $content ) { $result = ""; extract(shortcode_atts(array( 'file' => 'Empty' ), $atts)); $file = str_replace("http://domaine.com", ".", $file); // get path without URL, starts with "." ; voir pour remplacer par get relative path if (is_file($file)) { $bytes = filesize($file); $s = array('b', 'Kb', 'Mb', 'Gb'); $e = floor(log($bytes)/log(1024)); $result = sprintf('%.2f '.$s[$e], ($bytes/pow(1024, floor($e)))); } else { $result = $file." is not a file"; } return $result; } add_shortcode( 'sizefile', 'sizefile_func' );
function getpdfpages_func($atts, $content) { $cmd = "/usr/local/bin/pdfinfo"; // Linux path $result = ""; extract(shortcode_atts(array( 'file' => 'Empty' ), $atts)); $file = str_replace("http://domaine.com", ".", $file); // get path without URL, starts with "." ; voir pour remplacer par get relative path if (!is_file($file)) { $result = $file." is not a file"; } else { // Parse entire output // Surround with double quotes if file name has spaces exec("$cmd \"$file\"", $output); // Iterate through lines $pagecount = 0; foreach($output as $op) { // Extract the number if(preg_match("/Pages:\s*(\d+)/i", $op, $matches) === 1) { $pagecount = intval($matches[1]); break; } } $result = $pagecount; } return $result; } add_shortcode( 'getpdfpages', 'getpdfpages_func' );
Ces fonctions s’appellent avec les shortcode Toolset suivants :
[sizefile file="[types field='nom_champ_fichier' link='false'][/types]"] [getpdfpages file="[types field='nom_champ_fichier' link='false'][/types]"]
La fonction qui compte le nombre de pages du PDF en PHP est basée sur l’exécutable suivant : http://www.foolabs.com/xpdf/download.html
A installer sur votre serveur.
Source de la 2nde fonction, modifiée par nos soins pour Toolset : http://stackoverflow.com/questions/14644353/get-the-number-of-pages-in-a-pdf-document/14644354#14644354
0 commentaires