Changeset 57068 in spip-zone


Ignore:
Timestamp:
Jan 13, 2012, 11:24:03 PM (8 years ago)
Author:
fil@…
Message:

si on installe la librairie xpdf (et en tous cas le binaire pdftohtml) on peut importer aussi certains documents pdf

Location:
_plugins_/office2spip
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/office2spip/action/otest.php

    r57062 r57068  
    7777
    7878function office_load($file, $rep) {
    79         if (!preg_match(',\.(docx|doc|rtf|xls|xlsx|odt)$,', $file['name'], $r))
     79        if (!preg_match(',\.(docx|doc|rtf|xls|xlsx|odt|pdf)$,', $file['name'], $r))
    8080                return;
    8181
     
    8787        AND rename($tmp, $rep.$dst.'.'.$ext)) {
    8888                # ici on pourrait job_queue
    89                 office_convertir($rep.$dst.'.'.$ext);
     89                switch($ext) {
     90                        case 'pdf':
     91                                pdf_convertir($rep.$dst.'.'.$ext);
     92                                break;
     93               
     94                        default:
     95                                office_convertir($rep.$dst.'.'.$ext);
     96                                break;
     97                }
     98
    9099                return $dst;
    91100        }
     
    95104function office_convertir($doc) {
    96105        exec("unoconv --format=html $doc");
     106}
     107
     108function pdf_convertir($doc) {
     109        $dir = dirname($doc);
     110        $doc = basename($doc);
     111        $html = preg_replace(',\.pdf$,', '.html', $doc);
     112        $pwd = getcwd();
     113        chdir($dir);
     114        exec("pdftohtml -noframes -nodrm $doc $html");
     115        chdir($pwd);
    97116}
    98117
  • _plugins_/office2spip/exec/traiter_office.php

    r56864 r57068  
    3737        }
    3838       
    39         include_spip("inc/filtres");
    40         $largeur = largeur($dest);
    41         $hauteur = hauteur($dest);
    42         $taille = filesize($dest);
    43        
    44         $id_document = sql_insertq("spip_documents", array(
    45                 "extension" => $terminaison,
    46                 "date" => "NOW()",
    47                 "fichier" => $url_fichier,
    48                 "mode" => "document",
    49                 "distant" => "non",
    50                 "maj" => "NOW()",
    51                 "largeur" => $largeur,
    52                 "hauteur" => $hauteur,
    53                 "taille" => $taille
    54         ));
    55         if ($id_document > 0) {
    56                 sql_insertq("spip_documents_liens", array(
    57                         "id_document" => $id_document,
    58                         "id_objet" => $id_article,
    59                         "objet" => "article",
    60                         "vu" => "non"
     39        if ($taille = @filesize($dest)) {
     40                include_spip("inc/filtres");
     41                $largeur = largeur($dest);
     42                $hauteur = hauteur($dest);
     43       
     44                $id_document = sql_insertq("spip_documents", array(
     45                        "extension" => $terminaison,
     46                        "date" => "NOW()",
     47                        "fichier" => $url_fichier,
     48                        "mode" => "document",
     49                        "distant" => "non",
     50                        "maj" => "NOW()",
     51                        "largeur" => $largeur,
     52                        "hauteur" => $hauteur,
     53                        "taille" => $taille
    6154                ));
    62                
    63                 return "<doc$id_document|$align>";
     55                if ($id_document > 0) {
     56                        sql_insertq("spip_documents_liens", array(
     57                                "id_document" => $id_document,
     58                                "id_objet" => $id_article,
     59                                "objet" => "article",
     60                                "vu" => "non"
     61                        ));
     62                        return "<doc$id_document|$align>";
     63                }
    6464        }
    6565}
     
    102102        }
    103103       
    104         include_spip("inc/filtres");
    105         $largeur = largeur($dest);
    106         $hauteur = hauteur($dest);
    107         $taille = filesize($dest);
    108        
    109         $id_document = sql_insertq("spip_documents", array(
    110                 "extension" => $terminaison,
    111                 "date" => "NOW()",
    112                 "fichier" => $url_fichier,
    113                 "mode" => "image",
    114                 "distant" => "non",
    115                 "maj" => "NOW()",
    116                 "largeur" => $largeur,
    117                 "hauteur" => $hauteur,
    118                 "taille" => $taille
    119         ));
    120         if ($id_document > 0) {
    121                 sql_insertq("spip_documents_liens", array(
    122                         "id_document" => $id_document,
    123                         "id_objet" => $id_article,
    124                         "objet" => "article",
    125                         "vu" => "non"
     104        if ($taille = @filesize($dest)) {
     105                include_spip("inc/filtres");
     106                $largeur = largeur($dest);
     107                $hauteur = hauteur($dest);
     108
     109                $id_document = sql_insertq("spip_documents", array(
     110                        "extension" => $terminaison,
     111                        "date" => "NOW()",
     112                        "fichier" => $url_fichier,
     113                        "mode" => "image",
     114                        "distant" => "non",
     115                        "maj" => "NOW()",
     116                        "largeur" => $largeur,
     117                        "hauteur" => $hauteur,
     118                        "taille" => $taille
    126119                ));
    127                
    128                 return "<doc$id_document|$align>";
     120                if ($id_document > 0) {
     121                        sql_insertq("spip_documents_liens", array(
     122                                "id_document" => $id_document,
     123                                "id_objet" => $id_article,
     124                                "objet" => "article",
     125                                "vu" => "non"
     126                        ));
     127                       
     128                        return "<doc$id_document|$align>";
     129                }
    129130        }
    130131}
     
    231232                if ($terminaison == "html") {
    232233                        $nom_html = $nom_dest;
     234                }
     235                else if ($terminaison == "pdf") {
     236                        $doc = basename($nom_dest);
     237                        $dir = dirname($nom_dest);
     238                        $html = preg_replace(',\.pdf$,', '.html', $doc);
     239                        $pwd = getcwd();
     240                        chdir($dir);
     241                        exec("pdftohtml -noframes -nodrm $doc $html");
     242                        chdir($pwd);
    233243                }
    234244                else {
  • _plugins_/office2spip/inc/fonctionsale.php

    r56893 r57068  
    388388                $contenu = preg_replace(",[\r\n],", " ", $contenu); // Virer les retours chariot pour rendre le texte lisible - les paragaphes et br les reintroduiront la ou necessaire
    389389
     390                # en cas de presence de nombreux insecables, les nettoyer
     391                if (substr_count($contenu, '&nbsp;') > sqrt(strlen($contenu)/10)) {
     392                        $contenu = preg_replace(',\s*&nbsp;\s*,', ' ', $contenu);
     393                }
    390394                return $contenu;
    391395        }
Note: See TracChangeset for help on using the changeset viewer.