IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Javascript sur PDF avec la librairie FDPF


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut Javascript sur PDF avec la librairie FDPF
    Bonjour,

    J'essaye de lancer une impression d'un document PDF sans afficher la boite de dialogue en utilisant les fonctions de FPDF.PHP et FPDF_JS.PHP. La seule chose est que l'impression ne se lance pas, en fait le morceau de code javascript n'est pas exécuté. Quelqu'un pourrait-il m'aider à résoudre ce problème ?

  2. #2
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Par défaut
    salut,
    un peu de code ça serait bien.
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    a tout hasard essaye:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.print('document.pdf');
    ou encore:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <html>
    <head>
    <script type='text/javascript'>
    function imprimePDF() {
    var x = document.getElementById("PDF");
    x.focus();
    x.print();
    }
    </script>
     
    <body>
    <object id="PDF" data='test.pdf' name="whatever" style="height:0px; width:0px;">
    </object>
    <input type="button" onclick="imprimePDF()" value="imprimer" />
    </body>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut Javascript sur PDF
    Bonjour,
    La fonction "print" lance une impression en passant par la boite de dialogue.

    la librairie utilisée dans mon script c'est "fpdf.php" disponible sur www.fpdf.org
    J'ai aussi intégré le fichier "fpdf_js.php" disponible sur la même adresse sur la rubrique "Support JavaScript".

    voici le code du fichier fpdf_js.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    <?php
    require('fpdf.php');
     
    class PDF_Javascript extends FPDF {
     
            var $javascript;
            var $n_js;
     
            function IncludeJS($script) {
                    $this->javascript=$script;
            }
     
            function _putjavascript() {
                    $this->_newobj();
                    $this->n_js=$this->n;
                    $this->_out('<<');
                    $this->_out('/Names [(EmbeddedJS) '.($this->n+1).' 0 R ]');
                    $this->_out('>>');
                    $this->_out('endobj');
                    $this->_newobj();
                    $this->_out('<<');
                    $this->_out('/S /JavaScript');
                    $this->_out('/JS '.$this->_textstring($this->javascript));
                    $this->_out('>>');
                    $this->_out('endobj');
            }
     
            function _putresources() {
                    parent::_putresources();
                    if (!empty($this->javascript)) {
                            $this->_putjavascript();
                    }
            }
     
            function _putcatalog() {
                    parent::_putcatalog();
                    if (isset($this->javascript)) {
                            $this->_out('/Names <</JavaScript '.($this->n_js).' 0 R>>');
                    }
            }
    }
    ?>
    Et le code pour lancer l'impression avec ou sans boite de dialogue en passant true or false dans la fonction AutoPrint :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <?php
    define('FPDF_FONTPATH','font/');
    require('fpdf_js.php');
     
    class PDF_AutoPrint extends PDF_Javascript
    {
    function AutoPrint($dialog=false)
    {
    	//Lance la boîte d'impression ou imprime immediatement sur l'imprimante par défaut
    	$param=($dialog ? 'true' : 'false');
    	$script="print($param);";
    	$this->IncludeJS($script);
    }
     
    function AutoPrintToPrinter($server, $printer, $dialog=false)
    {
    	//Imprime sur une imprimante partagée (requiert Acrobat 6 ou supérieur)
    	$script = "var pp = getPrintParams();";
    	if($dialog)
    		$script .= "pp.interactive = pp.constants.interactionLevel.full;";
    	else
    		$script .= "pp.interactive = pp.constants.interactionLevel.automatic;";
    	$script .= "pp.printerName = '\\\\\\\\".$server."\\\\".$printer."';";
    	$script .= "print(pp);";
    	$this->IncludeJS($script);
    }
    }
     
    $pdf=new PDF_AutoPrint();
    $pdf->Open();
    $pdf->AddPage();
    $pdf->SetFont('Arial','',20);
    $pdf->Text(80, 50, 'Imprimez-moi !');
    //Ouvre la boîte d'impression
    $pdf->AutoPrint(true);
    $pdf->Output();
    ?>
    Merci d'avance pour vos réponses

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    fpdf => c'est du php, ça ne fait que generer du code html pour afficher le pdf.
    coté php tu ne pourras pas gerer l'impression.
    Et coté client en javascript tu n'as que les deux possibilités données ...
    l'affichage de la boite de dialogue est un paramètres de l'OS du client et javascript n'as pas accès a ces paramètres ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut
    Merci pour cette réponse mais ce n'est malheureusement pas la bonne. Je te propose d'aller sur le site www.fpdf.org -> Scripts -> Support Javascript et tu verras qu'il y a moyen de commander une impression sans boite de dialogue en intégrant du Javascript à l'ouverture du document PDF.

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    ça n'a rien à voir avec javascript au niveau du browser
    c'est un paramètre du fichier pdf lui même !
    fpdf génère un document pdf qui s'imprime tout seul à l'ouverture avec ou sans la boite de dialogue et c'est complètement indépendant du navigateur ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut
    J'ai bien compris ce que tu veux dire, d'ailleurs c'est mentionné clairement sur le site www.fpdf.org , mais mon soucis aujourd'hui c'est pourquoi ca ne marche pas alors que le script fonctionne très bien sur l'exemple donné sur le site http://fpdf.org/fr/script/ex36.pdf . Le phénomène qui se produit est que le code Javascript ($this->javascript=$script) ne réagit pas dans mon programme , le pdf se lance bien mais aucune impression.

    Merci,

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    ça viens de l'extension fpdf, pas de javascript ...
    j'ai downloadé l'exemple et si tu ouvres le fichier pdf tout seul ils s'imprime à l'ouverture.

    après ça depend aussi de comment tu demandes au browser d'afficher la page pdf ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut
    En fait, si tu passes TRUE dans la fonction AutoPrint() la boite de dialogue s'ouvre sinon l'impression se lance automatiquement. Enfin du moins c'est le résultat que j'aimerais avoir...

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    heu non ... je ne pesnes pas que ce soit exactement le comportement

    si tu mets autoPrint à true le document s'imprime à l'ouverture... (avec la boite de dialogue)

    si tu ne le mets pas l'autoprint à true ... le document ne s'imprime pas à l'ouverture ///

    Pour moi cette hisoitre de boite de dialogue est dépendant des paramètre de l'OS et sou windows par exemple avec un activeX tu pourrais aller modifier la base de registre ...
    Mais ne compte pas sur js ni dasn le document PDF ni dans le browser pour faire ça
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  12. #12
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut
    Je crois que nous parlons de 2 choses différentes. Le phénomène est tel que je te l'ai décris et la classe fpdf_js.php est bien expliquée sur le site (explication tirée du site plus bas)

    Cet exemple montre comment démarrer l'impression à l'ouverture du document. Il est possible d'afficher la boîte de dialogue (en passant true à la méthode AutoPrint()), ou bien d'imprimer directement avec les paramètres par défaut (avec false).

    Si quelqu'un a une explication je suis preneur, merci...

Discussions similaires

  1. un menu géré avec javascript sur plusieurs niveaux (logique)
    Par polothentik dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/07/2008, 14h23
  2. lire un dessin sur un pdf avec itext
    Par mm2405 dans le forum Documents
    Réponses: 5
    Dernier message: 23/04/2007, 11h03
  3. probleme ouverture pdf avec SSL sur IE
    Par chess75 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 26/09/2006, 22h43
  4. [Librairies] [Lire sur un fichier Word ou PDF avec PHP]
    Par amatollah dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 10/05/2006, 07h58
  5. Construire chemin sur bouton avec évt Javascript
    Par Ph. B. dans le forum XMLRAD
    Réponses: 4
    Dernier message: 27/05/2003, 10h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo