Changeset 61753 in spip-zone


Ignore:
Timestamp:
May 27, 2012, 7:55:37 PM (7 years ago)
Author:
kent1@…
Message:

On s'insère dans le pipeline document_desc_actions qui ajoute le bouton de conversion de document dans le bloc de document ainsi qu'un bouton de création de vignette depuis la première page du document.

Petite modification de l'action de conversion pour les cas où l'on ne demande que la vignette.

version 1.1.0

Location:
_plugins_/doc2img
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/doc2img/action/doc2img_convert.php

    r52340 r61753  
    2323        $securiser_action = charger_fonction('securiser_action', 'inc');
    2424        $arg = $securiser_action();
    25 
     25        $arg = explode('-',$arg);
     26        list($id_document, $action) = $arg;
    2627    //on lance la conversion du document
    27     if ($id_document = intval($arg)) {
     28    if ($id_document = intval($id_document)) {
    2829        $convertir = charger_fonction('doc2img_convertir','inc');
    29         $convertir($id_document);
     30        $convertir($id_document,$action);
    3031        include_spip('inc/invalideur');
    3132        suivre_invalideur("id='id_document/$id_document'");
  • _plugins_/doc2img/doc2img_pipeline.php

    r52838 r61753  
    3939            && (sql_countsel('spip_doc2img','id_document='.intval($id_document)) == 0)
    4040            && (lire_config('doc2img/conversion_auto') == "on")){
    41 
    4241                $infos_doc = sql_fetsel('extension,mode,fichier,mode,distant','spip_documents','id_document='.intval($id_document));
    4342                $types_autorises = explode(',',lire_config("doc2img/format_document",null,true));
     
    7271}
    7372
     73/**
     74 * Insertion dans le pipeline document_desc_actions (Plugin Mediathèque)
     75 * Ajouter le bouton de conversion de document dans le bloc de document
     76 *
     77 * @param array $flux
     78 * @return array $flux
     79 */
     80function doc2img_document_desc_actions($flux) {
     81        $id_document = $flux['args']['id_document'];
     82        $infos = sql_fetsel('*', 'spip_documents', 'id_document=' . intval($id_document));
     83        $types_autorises = explode(',',lire_config("doc2img/format_document",null,true));
     84        if($infos['extension'] == 'tif'){
     85                $infos['extension'] = 'tiff';
     86        }
     87        if(($infos['mode'] != 'vignette')
     88                && ($infos['distant'] == 'non')
     89                && in_array($infos['extension'],$types_autorises)){
     90                        $fond='prive/doc2img_media_boutons';
     91                if ($flux['args']['position'] == 'galerie') {
     92                        $flux['data'] .= recuperer_fond($fond,array('mode'=>'galerie','id_document'=>$id_document));
     93                } else {
     94                        $flux['data'] .= recuperer_fond($fond,array('id_document'=>$id_document));
     95                }
     96        }
     97        return $flux;
     98}
    7499?>
  • _plugins_/doc2img/inc/doc2img_convertir.php

    r52838 r61753  
    1414 *  - http://valokuva.org/?p=7#comment-19198
    1515 *
    16  * @param $id_document identifiant du document à convertir
    17  */
    18 function inc_doc2img_convertir($id_document) {
    19 
     16 * @param int $id_document identifiant du document à convertir
     17 * @param string $type méthode à utiliser :
     18 *              - full converti tout le document
     19 *              - vignette converti la première page en vignette du document
     20 */
     21function inc_doc2img_convertir($id_document,$type='full') {
     22        if(!in_array($type,array('full','vignette')))
     23                $type = 'full';
    2024        if(function_exists('imagick_readimage') OR class_exists('Imagick')){
    2125            // NOTE : les repertoires doivent se finir par un /
     
    2529
    2630            $config = lire_config('doc2img');
    27 
    28             //ecrire_config('php::doc2img/'.$id_document.'/statut','encours');
    2931
    3032            //racine du site c'est a dire url_site/
     
    7577            }
    7678
    77             //ecrire_config('php::doc2img/'.$id_document.'/pages',$nb_pages);
    78 
    7979            $frame = 0;
    8080
    8181                $resolution = $config['resolution'] ? $config['resolution'] : 150;
    8282               
    83             // chaque page est un fichier qu'on sauve dans la table doc2img indexé
    84             // par son numéro de page
    85             do {
    86                 spip_log("Conversion de la page $frame",'doc2img');
    87                 //on accede à la page $frame
    88                 if ($version == '0.9') {
    89                     imagick_goto($handle, $frame);
    90                     $handle_frame = @imagick_getimagefromlist($handle);
    91                 } else {
    92                         $image_frame = new Imagick();
    93                         if(is_numeric($resolution) && ($resolution <= '600') && ($resolution > $identify['resolution']['x'])){
    94                                 $image_frame->setResolution($resolution,$resolution);
    95                         }
    96                                 $image_frame->readImage($document['source_url']['absolute'].$document['fullname'].'['.$frame.']');
    97                                 $image_frame->setImageFormat($config['format_cible']);
    98                                 if(is_numeric($config['compression']) && ($config['compression'] > 50) && ($config['compression'] <= 100)){
    99                                         $image_frame->setImageCompressionQuality($config['compression']);
    100                                 }
    101                     $handle_frame = $image_frame;
    102                 }
    103 
    104                 //calcule des dimensions
    105                 $dimensions = doc2img_ratio($handle_frame,$version,$config);
    106 
    107                 //nom du fichier cible, c'est à dire la frame (image) indexée
    108                 $document['frame'] = $document['name'].'-'.$frame.'.'.$config['format_cible'];
    109 
    110                 //on sauvegarde la page
    111                 if ($version == '0.9') {
    112                         //on redimensionne l'image
    113                         imagick_zoom($handle_frame, $dimensions['largeur'], $dimensions['hauteur']);
    114                     imagick_writeimage($handle_frame, $document['cible_url']['absolute'].$document['frame']);
    115                     $taille = filesize($document['cible_url']['absolute'].$document['frame']);
    116 
    117                 } else {
    118                         //$image_frame->resizeImage($dimensions['largeur'], $dimensions['hauteur'],Imagick::FILTER_LANCZOS,1);
    119                     $image_frame->writeImage($document['cible_url']['absolute'].$document['frame']);
    120                     $taille = filesize(get_spip_doc(set_spip_doc($document['cible_url']['relative'].$document['frame'])));
    121                 }
    122 
    123                 $largeur = $dimensions['largeur'];
    124                         $hauteur = $dimensions['hauteur'];
    125 
    126                         //sauvegarde les donnees dans la base
    127                 if (!sql_insertq(
    128                     "spip_doc2img",
    129                     array(
    130                         "id_document" => $id_document,
    131                         "fichier" => set_spip_doc($document['cible_url']['relative'].$document['frame']),
    132                         "page" => $frame,
    133                         "largeur" => $largeur,
    134                         "hauteur" => $hauteur,
    135                         "taille" => $taille
    136                     )
    137                 )) {
    138                     return "erreur base de donnée";
    139                 }
    140 
    141                 if(($frame == 0) && ($config['logo_auto']=='on') && in_array($config['format_cible'],array('png','jpg'))){
    142                         if(
    143                                 ($id_vignette = sql_getfetsel('id_vignette','spip_documents','id_document='.intval($id_document)) == 0)
    144                                 OR !file_exists(get_spip_doc(sql_getfetsel('fichier','spip_documents','id_document='.intval($id_vignette))))
    145                         ){
    146                                 if(is_numeric($id_vignette)){
    147                                         sql_delete('spip_documents','id_document='.intval($id_vignette));
    148                                 }
    149                                 $ajouter_documents = charger_fonction('ajouter_documents', 'inc');
    150                                         $x = $ajouter_documents($document['cible_url']['absolute'].$document['frame'], $document['cible_url']['absolute'].$document['frame'],
    151                                                             'document', $id, 'vignette', $id_document, $actifs);
    152                         }
    153                 }
    154                 //on libère la frame
    155                 if ($version == '0.9') {
    156                     imagick_free($handle_frame);
    157                 } else {
    158                     $image_frame->clear();
    159                     $image_frame->destroy();
    160                 }
    161                 $frame++;
    162             } while($frame < $nb_pages );
    163 
     83               
     84                if($type == 'full'){
     85                    // chaque page est un fichier qu'on sauve dans la table doc2img indexé
     86                    // par son numéro de page
     87                    do {
     88                        spip_log("Conversion de la page $frame",'doc2img');
     89                        //on accede à la page $frame
     90                        if ($version == '0.9') {
     91                            imagick_goto($handle, $frame);
     92                            $handle_frame = @imagick_getimagefromlist($handle);
     93                        } else {
     94                                $image_frame = new Imagick();
     95                                if(is_numeric($resolution) && ($resolution <= '600') && ($resolution > $identify['resolution']['x'])){
     96                                        $image_frame->setResolution($resolution,$resolution);
     97                                }
     98                                        $image_frame->readImage($document['source_url']['absolute'].$document['fullname'].'['.$frame.']');
     99                                        $image_frame->setImageFormat($config['format_cible']);
     100                                        if(is_numeric($config['compression']) && ($config['compression'] > 50) && ($config['compression'] <= 100)){
     101                                                $image_frame->setImageCompressionQuality($config['compression']);
     102                                        }
     103                            $handle_frame = $image_frame;
     104                        }
     105       
     106                        //calcule des dimensions
     107                        $dimensions = doc2img_ratio($handle_frame,$version,$config);
     108       
     109                        //nom du fichier cible, c'est à dire la frame (image) indexée
     110                        $document['frame'] = $document['name'].'-'.$frame.'.'.$config['format_cible'];
     111       
     112                        //on sauvegarde la page
     113                        if ($version == '0.9') {
     114                                //on redimensionne l'image
     115                                imagick_zoom($handle_frame, $dimensions['largeur'], $dimensions['hauteur']);
     116                            imagick_writeimage($handle_frame, $document['cible_url']['absolute'].$document['frame']);
     117                            $taille = filesize($document['cible_url']['absolute'].$document['frame']);
     118       
     119                        } else {
     120                                //$image_frame->resizeImage($dimensions['largeur'], $dimensions['hauteur'],Imagick::FILTER_LANCZOS,1);
     121                            $image_frame->writeImage($document['cible_url']['absolute'].$document['frame']);
     122                            $taille = filesize(get_spip_doc(set_spip_doc($document['cible_url']['relative'].$document['frame'])));
     123                        }
     124       
     125                        $largeur = $dimensions['largeur'];
     126                                $hauteur = $dimensions['hauteur'];
     127       
     128                                //sauvegarde les donnees dans la base
     129                        if (!sql_insertq(
     130                            "spip_doc2img",
     131                            array(
     132                                "id_document" => $id_document,
     133                                "fichier" => set_spip_doc($document['cible_url']['relative'].$document['frame']),
     134                                "page" => $frame,
     135                                "largeur" => $largeur,
     136                                "hauteur" => $hauteur,
     137                                "taille" => $taille
     138                            )
     139                        )) {
     140                            return "erreur base de donnée";
     141                        }
     142       
     143                        if(($frame == 0) && ($config['logo_auto']=='on') && in_array($config['format_cible'],array('png','jpg'))){
     144                                if(
     145                                        ($id_vignette = sql_getfetsel('id_vignette','spip_documents','id_document='.intval($id_document)) == 0)
     146                                        OR !file_exists(get_spip_doc(sql_getfetsel('fichier','spip_documents','id_document='.intval($id_vignette))))
     147                                ){
     148                                        if(is_numeric($id_vignette)){
     149                                                sql_delete('spip_documents','id_document='.intval($id_vignette));
     150                                        }
     151                                        $ajouter_documents = charger_fonction('ajouter_documents', 'inc');
     152                                                $x = $ajouter_documents($document['cible_url']['absolute'].$document['frame'], $document['cible_url']['absolute'].$document['frame'],
     153                                                                    'document', $id, 'vignette', $id_document, $actifs);
     154                                }
     155                        }
     156                        //on libère la frame
     157                        if ($version == '0.9') {
     158                            imagick_free($handle_frame);
     159                        } else {
     160                            $image_frame->clear();
     161                            $image_frame->destroy();
     162                        }
     163                        $frame++;
     164                    } while($frame < $nb_pages );
     165            }else{
     166                do {
     167                        spip_log("Conversion de la page $frame",'doc2img');
     168                        //on accede à la page $frame
     169                        if ($version == '0.9') {
     170                            imagick_goto($handle, $frame);
     171                            $handle_frame = @imagick_getimagefromlist($handle);
     172                        } else {
     173                                $image_frame = new Imagick();
     174                                if(is_numeric($resolution) && ($resolution <= '600') && ($resolution > $identify['resolution']['x'])){
     175                                        $image_frame->setResolution($resolution,$resolution);
     176                                }
     177                                        $image_frame->readImage($document['source_url']['absolute'].$document['fullname'].'['.$frame.']');
     178                                        $image_frame->setImageFormat($config['format_cible']);
     179                                        if(is_numeric($config['compression']) && ($config['compression'] > 50) && ($config['compression'] <= 100)){
     180                                                $image_frame->setImageCompressionQuality($config['compression']);
     181                                        }
     182                            $handle_frame = $image_frame;
     183                        }
     184       
     185                        //calcule des dimensions
     186                        $dimensions = doc2img_ratio($handle_frame,$version,$config);
     187       
     188                        //nom du fichier cible, c'est à dire la frame (image) indexée
     189                        $document['frame'] = $document['name'].'-'.$frame.'.'.$config['format_cible'];
     190       
     191                        //on sauvegarde la page
     192                        if ($version == '0.9') {
     193                                //on redimensionne l'image
     194                                imagick_zoom($handle_frame, $dimensions['largeur'], $dimensions['hauteur']);
     195                            imagick_writeimage($handle_frame, $document['cible_url']['absolute'].$document['frame']);
     196                            $taille = filesize($document['cible_url']['absolute'].$document['frame']);
     197       
     198                        } else {
     199                                //$image_frame->resizeImage($dimensions['largeur'], $dimensions['hauteur'],Imagick::FILTER_LANCZOS,1);
     200                            $image_frame->writeImage($document['cible_url']['absolute'].$document['frame']);
     201                            $taille = filesize(get_spip_doc(set_spip_doc($document['cible_url']['relative'].$document['frame'])));
     202                        }
     203       
     204                        $largeur = $dimensions['largeur'];
     205                                $hauteur = $dimensions['hauteur'];
     206       
     207                        if(in_array($config['format_cible'],array('png','jpg'))){
     208                                if(
     209                                        ($id_vignette = sql_getfetsel('id_vignette','spip_documents','id_document='.intval($id_document)) == 0)
     210                                        OR !file_exists(get_spip_doc(sql_getfetsel('fichier','spip_documents','id_document='.intval($id_vignette))))
     211                                ){
     212                                        if(is_numeric($id_vignette)){
     213                                                sql_delete('spip_documents','id_document='.intval($id_vignette));
     214                                        }
     215                                        $ajouter_documents = charger_fonction('ajouter_documents', 'inc');
     216                                                $x = $ajouter_documents($document['cible_url']['absolute'].$document['frame'], $document['cible_url']['absolute'].$document['frame'],
     217                                                                    'document', $id, 'vignette', $id_document, $actifs);
     218                                }
     219                        }
     220                        //on libère la frame
     221                        if ($version == '0.9') {
     222                            imagick_free($handle_frame);
     223                        } else {
     224                            $image_frame->clear();
     225                            $image_frame->destroy();
     226                        }
     227                        $frame++;
     228                    } while($frame < 1 );
     229            }
    164230            /**
    165231             * Libération de la ressource pour les anciennes versions
     
    171237            // libération du verrou
    172238            spip_fclose_unlock($fp);
    173             //ecrire_config('doc2img/'.$id_document.'/statut','ok');
    174239
    175240            return true;
  • _plugins_/doc2img/lang/doc2img_fr.php

    r54538 r61753  
    88        // B
    99        'bouton_convertir' => 'Convertir',
     10        'bouton_convertir_serie' => 'Convertir en une série d\'images',
     11        'bouton_convertir_vignette' => 'Convertir la première page en vignette',
    1012
    1113        // C
  • _plugins_/doc2img/modeles/docimg.html

    r47633 r61753  
     1[(#REM)
     2
     3        Modèle docimg
     4]
    15<B_d2c>
    26        #ANCRE_PAGINATION
  • _plugins_/doc2img/plugin.xml

    r55874 r61753  
    22        <nom><multi>[fr]Documents en Images[en]Documents to images</multi></nom>
    33        <auteur>Camille Lafitte</auteur>
    4         <version>1.0.3</version>
     4        <version>1.1.0</version>
    55        <etat>stable</etat>
    66        <slogan>
     
    1111        </slogan>
    1212    <description><multi>
    13         [fr]Ce plugin permet de convertir &#224; la vol&#233;e des pdf, tiff en image. Ces images sont ensuite exploitable via une boucle.
    14                 [en]This plugin will convert on the fly pdf, tiff ... documents in image(s). These images can then be exploited via a loop.
     13        [fr]Ce plugin permet de convertir &#224; la vol&#233;e des pdf, tiff et autres types de document en image ou série d'images. Ces images sont ensuite exploitables via une boucle spécifique.
     14                [en]This plugin will convert on the fly pdf, tiff and other kind of documents in image or serie of images. These images can then be used with a specific loop.
    1515        </multi></description>
    1616    <lien>http://www.spip-contrib.net/doc2img</lien>
     
    3636       <inclure>doc2img_pipeline.php</inclure>
    3737   </pipeline>
    38 
     38        <pipeline>
     39                <nom>document_desc_actions</nom>
     40                <inclure>doc2img_pipeline.php</inclure>
     41        </pipeline>
    3942        <necessite id="SPIP" version="[2.1.0;2.1.99]" />
    4043        <necessite id="cfg" version="[1.9;]" />
     44        <utilise id="medias" version="[1.6.12;]" />
    4145   <categorie>edition</categorie>
    4246</plugin>
Note: See TracChangeset for help on using the changeset viewer.