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

jQuery Discussion :

"Dialog" et impression PDF [UI]


Sujet :

jQuery

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 143
    Par défaut "Dialog" et impression PDF
    Bonjour,

    Alors voici mon petit souci : j'ai crée un dialog pour pouvoir faire une impression pdf avec pdfCreator du résultat de ma fenêtre. Le bouton "Continuer" permet de faire un printAera. Le problème est que lorsque j'ai ajouté le fichier css jquery-ui.css ma boîte dialog est devenue toute belle sauf qu'elle c'est incrusté dans mon impression et le problème et que je n'arrive pas en gros à la cacher

    Bien sur j'ai testé avec les options et events : beforeClose et hide, mais ça ne change rien.

    Voici les résultats d'avant et après avoir ajouté le css :
    • Avant le css : Nom : Normal.JPG
Affichages : 521
Taille : 26,9 Ko
    • Après le css : Nom : Pas normal.JPG
Affichages : 436
Taille : 24,0 Ko


    Et voici le code :
    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
    $j("#btntest").click(function(){$j("#myDiv2").dialog('open')});
    $j( "#myDiv2" ).dialog({
    	height: 140,
    	title: "Confirmation",
    	modal: true,
    	autoOpen : false,
    	draggable: true,
    	closeOnEscape: true,
    	buttons: [{
                text: "Continuer",
                click: function() {
    		$j("#myDiv").printArea( {} );
                    // Cancel code here
                    $j(this).dialog("close");
                }
            },
            {
                text: "Annuler",
                click: function() {
                    // Save code here
                    $j(this).dialog("close");
                }
            }]
    });

  2. #2
    Membre très actif
    Avatar de la.lune
    Homme Profil pro
    Directeur Technique
    Inscrit en
    Décembre 2010
    Messages
    550
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Comores

    Informations professionnelles :
    Activité : Directeur Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 550
    Par défaut
    J'ai avec moi une solution mais je ne peux pas tester car il me manque de chose, mais bon s'il y a le moindre soucis reviens ici.
    Alors on pourrait écrire le code de fermeture avant l'impression, et enregistrer un événement close une fois fermé, faire un dans css un dysplay none ou enlever carrément le dialog du DOM avec un remove ou un detach si tu veux le réutiliser, ou . A moins que tu as besoin de ton dialogue en plein traitement de l'impression.

    Mais on crains que ça ne laisse pas l’action d'impression finir son corps car tu attache tout au dialogue. Donc on va fermer après, mais on va jouer sur l'état asynchrone de JavaScript alors on va créer une fonction à part et faire juste l'appel donc le dialogue ne sera pas responsable de l’échec de l'impression si on le démlit.

    Code JavaScript : 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
     
     
    function imprimer(){
     
            $("#myDiv").printArea( { } );
     
    }
    $("#btntest").click(function(){$("#myDiv2").dialog('open');});
     
    $( "#myDiv2" ).dialog({
              height: 140,
              title: "Confirmation",
              modal: true,
              autoOpen : false,
              draggable: true,
              closeOnEscape: true,
     
              close: function(event, ui){ 
                        //On le garde quelque part
                        madialog=$(this).detach() ; },
     
              buttons:             [                {
                        text: "Continuer", 
                       click: function() {
     
             //IL FAUX TESTER LES DEUX OU JOUER SUR LES CSS
              imprimer(); 
              $(this).dialog("close");
     
             /*L'idéal serait ceci alors teste le, normalement ça doit bien marcher
              $(this).dialog("close");
               imprimer();*/ 
     
    }                }, 
     
    {  text: "Annuler",
        click: function() {          
     
       // Save code here 
                           $(this).dialog("close"); 
       }                }            ] 
     
    });

  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 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    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 661
    Billets dans le blog
    1
    Par défaut
    un media print en css ne suffirait il pas ???
    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 confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 143
    Par défaut
    Tout d'abord merci de m'avoir répondu

    @la.lune :

    J'ai essayé tes 2 manip mais malheureusement sa ne marche pas

    La première manip ne change rien sa fait toujours le même résultat et la deuxième me fait ça :
    Nom : Pas top.JPG
Affichages : 388
Taille : 13,4 Ko

    Du coup mon tableau n'est plus chargé


    @SpaceFrog :

    J'avais essayé ça au tout début de créer une autre page css pour le media print, mais en faisant ça mon tableau n'avait plus du tout de couleur n'y rien. Mais ce n'est pas mon but car moi je souhaite faire une impression pdf selon une partie de la page spécifique qui est mon tableau et non de toute la page.

  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 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    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 661
    Billets dans le blog
    1
    Par défaut
    en quoi media print t'oblige-t-il à créer une autre page ..

    colle juste un display non à l'élement qui te gène dans le media print ...
    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 confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 143
    Par défaut
    Bah je connaissais pas, du coup je suis allé voir quelques tuto et la plupart disait de faire une page css en plus pour la différencier de celle de base. Mais de toute façon ce n'est pas ce que je recherche car cela concerne toute la page, alors que moi c'est juste un morceau de la page qui m'intéresse.

  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 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    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 661
    Billets dans le blog
    1
    Par défaut
    ça ne concerne que ce que tu lui demande de concerner ...
    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 confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 143
    Par défaut
    Ok ^^
    Je suis un peut long à la détente excuse moi :p

    Oui certes, mais sa ne marchera pas. Car le tableau est créer dynamiquement avec les couleurs aussi. Donc rien est mis dans un fichier css, tout est alloué dans les balises selon des variables.
    Ce n'est pas moi qui est structuré comme ça mais le boulot ^^'

  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 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    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 661
    Billets dans le blog
    1
    Par défaut
    ??? dynamiquement ou pas ça ne change rien
    tu mets juste un display non en media print sur l'élement génant
    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 confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 143
    Par défaut
    Ah tu parle de la boîte dialog pour le media print x)
    Je pensais que tu parlait du tableau.
    (Fin de journée cerveau HS )

    En gros je fais un truc comme ça pour le dialog ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id=myDiv2 media='print' style='display:none;'></div>

  11. #11
    Membre très actif
    Avatar de la.lune
    Homme Profil pro
    Directeur Technique
    Inscrit en
    Décembre 2010
    Messages
    550
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Comores

    Informations professionnelles :
    Activité : Directeur Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 550
    Par défaut
    Ah ok désolé comme j'ai dis j'aime tester avant de dire, mais je ne peux pas tester Déjà, on t'a dit de faire display none mais pas définir ça depuis le début, un truc comme ça, et j'avais même soulginer ça a début tu peux tester ceci pour le 2e cas :

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $(this).dialog("close").css("display", "none");
     
    imprimer();

  12. #12
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 143
    Par défaut
    Merci, mais ça ne change rien, le résultat est le même que sur le screen que j'ai laissé. Mon tableau n'est pas chargé

  13. #13
    Membre très actif
    Avatar de la.lune
    Homme Profil pro
    Directeur Technique
    Inscrit en
    Décembre 2010
    Messages
    550
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Comores

    Informations professionnelles :
    Activité : Directeur Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 550
    Par défaut
    Il y a un problème déjà dans ton code, car j'ai téléchargé le plugin printarea et j'ai testé je ne trouve pas l'erreur que tu as. Tu as un bug quelque part.
    Enlève déjà le 'j' partout où tu as écris "$j(" , Qui t'a dis qu'après le symbole $ on met un 'j', c'est le '$(' que tu dois avoir. C'est ça le bug qui bloque tes scripts.

    Au début j'ai testé avec un code à part entière ça marche et après quand j'ai copié ton code, j'ai eu le bug dans la console.

    Déjà tu dois t'habituer à corriger les bug dans la console ou avec ton IDE, moi j'utilise Netbeans qui synchronise avec chrome utilisant une extension, donc la page sur chrome et débogage javascript avec netebans.

    Tu nous a fais perdre tout ce temps pour un bug banal dans ton code.

  14. #14
    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 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    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 661
    Billets dans le blog
    1
    Par défaut
    heu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id=myDiv2 media='print' style='display:none;'></div>
    c'est quoi ce code ????

    Tu aurais pu au moins faire un minimum de recherche sur @media en css ...

    http://christophe-f.developpez.com/t...ule-media.html

    ou un exemple pratique http://sk-martin.developpez.com/Certif.htm
    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 !

  15. #15
    Membre très actif
    Avatar de la.lune
    Homme Profil pro
    Directeur Technique
    Inscrit en
    Décembre 2010
    Messages
    550
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Comores

    Informations professionnelles :
    Activité : Directeur Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 550
    Par défaut
    Lui il a des bug dans son code, aucune raison à ce que ça ne marche pas, j'ai testé moi même, j'ai même pas besoin de faire un remove ou un detach ou un display none, et j'ai fais exprès d'ajouter même le div du dialogue à l'intérieur du div à imprimer mais il sera caché bien sûr au debut, et pourtant le pdf généré ne donne pas le dialogue et le dialogue se ferme correctement.
    Mais dès que j'ai copié son code

  16. #16
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 143
    Par défaut
    @la.lune

    Le '$j' n'est pas du tout un bug !
    C'est comme ça car je fait un jQuery.noConflict().
    Car le projet sous lequel je travail utilise "Prototype" du coup j'utilise cette méthode pour éviter tout confit entre les 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //Pour éviter les conflis avec Prototype
    var $j = jQuery.noConflict();
    Et puis je n'ai pas de 'mode console' car je travail sous "Progress" le langage le plus perdu que je connaisse ^^ et sous IE8.
    Tout ce que j'ai c'est un éditeur du genre blocnote mais avec des couleurs, sachant que notepad++ est la base.
    Voici un screen d'exemple :
    Nom : Editeur.JPG
Affichages : 548
Taille : 91,6 Ko

    Enfin bref, le '$j' ne pose pas de problème. Après qu'il y est des erreurs ailleurs que dans le code JS peut être je sais pas, je suis qu'un étudiant en alternance qui est tombé sur ce projet en cours et qui essaye de trouver une solution aux problèmes que je rencontre sur ce code.

    @Spacefrog

    J'ai effectué des recherches dessus sauf que je m'y suis pas attardé dessus, car le but était au départ de générer directement un pdf le résultat affiché sans passer par la case 'impression' et pdfCreator.

  17. #17
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 143
    Par défaut
    Le truc c'est que tout marche niquel si je n'ajoute pas le fichier css jquery-ui.css, la boîte de dialog ne ressemble vraiment plus à rien mais bon :
    Nom : dialog.JPG
Affichages : 441
Taille : 20,4 Ko

    Il doit y avoir quelque chose dans ce css qui bloque la boîte. Après vous me direz pourquoi ne pas faire mon propre css ^^'

  18. #18
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 143
    Par défaut
    Voilà je pense avoir résolu mon problème

    J'ai viré le css de base fournis par jQuery et je me le suis fait mois même.

    Code css : 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
    .ui-widget {
        font-family: Verdana,Arial,sans-serif;
        font-size: 10px;
    }
     
    .ui-widget-content {
        background: #F9F9F9;
        border: 5px solid #dfe7f3;
        color: #222222;
    }
     
    .ui-dialog {
        left: 0;
        outline: 0 none;
        padding: 0 !important;
        /* position: absolute; */
        top: 0;
    }
     
    .ui-dialog-titlebar-close {
      visibility: hidden;
    }
     
    .ui-dialog .ui-dialog-content {
        background: none repeat scroll 0 0 transparent;
        border: 0 none;
        overflow: auto;
        position: relative;
        padding: 0 !important;
    }
     
    .ui-widget-header {
        background: #6ca8cc;
        border: 0;
        color: #fff;
        font-weight: normal;
    }
     
    .ui-dialog .ui-dialog-titlebar {
        padding: 5px 10px;
        position: relative;
            font-size: 10px;
    }

    Bon ce n'est qu'une base j'ai encore des chose à rajouter mais au moins j'ai plus le problème de la boîte de dialog qui reste fixer lors de l'impression.

    Merci encore pour votre aide

  19. #19
    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 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    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 661
    Billets dans le blog
    1
    Par défaut
    ...
    ou pourquoi faire simple avec @media print quand on peut se compliquer l'existence autrement ...
    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 !

  20. #20
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 143
    Par défaut
    Bah le truc c'est que boulet que je suis en faisant le media print j'avais mis le nom de ma div et tout ce que sa cachait été le texte mis dedans ^^
    C'est que pendant le weekend que j'ai tilté que c'était avec les sélecteurs du dialog qu'il fallait le faire

    Donc oui avec media print sa marche
    Mais j'ai quand même fait un autre css car je trouvais que celui fournis de base a beaucoup trop de chose inutile pour ma dialog.

    Donc voilà tout est bien qui fini bien :p

    Sujet résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Impression PDF et imprimante par défaut
    Par bobbafet dans le forum C++Builder
    Réponses: 2
    Dernier message: 03/11/2004, 22h33

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