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 :

Impression PDF Iframe + Adobe Reader


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 17
    Points
    17
    Par défaut Impression PDF Iframe + Adobe Reader
    Bonjour à tous, et bonne année 2014

    Je viens vers vous concernant un problème que je rencontre lors de l'impression d'un PDF dans un iframe avec le plug-in Adobe Reader, sous Google Chrome.

    Actuellement, pour imprimer un PDF dans notre application, j'utilise un iframe afin d'afficher directement l'aperçu avant impression (afin d'éviter des clics inutiles). Voici le code que j'utilise :

    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
    var ifrm = $('<iframe>').css({
        position: absolute,
        left: 0,
        top: 0,
        z-index: -1,
        width: 0,
        height: 0,
        border: 0
    });
    ifrm.attr('src', 'http://....pdf');
    ifrm.appendTo(document.body);
    ifrm.on('load', function() {
        var iframe = this;
        var iframeWindow = iframe.contentWindow || iframe;
        iframe.focus();
        iframeWindow.print();
    });
    Tout marche bien lorsque le lecteur de PDF de Google Chrome (plug-in Chrome PDF Viewer) est utilisé.
    Par contre, si c'est le plug-in Adobe Reader qui est utilisé, la page mouline et rien ne se passe. Je suis obligé de fermer la fenetre pour débloquer la situation.

    Sur Google Agenda, lors de l'impression de l'agenda, ils arrivent à afficher la boite de dialogue d'impression lorsque le plug-in Adobe Reader est actif.

    Avez vous une idée d'où peut venir le problème ? et comment Google arrive à afficher cette boite de dialogue avec Adobe Reader ?

    Merci de vos réponses,
    Bonne journée

  2. #2
    Membre averti Avatar de npuzin
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2007
    Messages : 265
    Points : 423
    Points
    423
    Par défaut
    J'ai rencontré ce problème avec chrome lorsque le "content-length" était manquant dans le header de la réponse du pdf renvoyé, si je me rappelle bien.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 17
    Points
    17
    Par défaut
    Mon PDF est généré en PHP avec HTML2PDF et l'entête "Content-Length" est bien renseignée dans la réponse du PDF
    Voila le code pour générer mon PDF en PHP :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $pdf = new \HTML2PDF();
    $pdf->pdf->SetDisplayMode('fullpage');
    $pdf->writeHTML('MON_HTML');
    $pdf->Output('monpdf.pdf');

  4. #4
    Membre averti Avatar de npuzin
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2007
    Messages : 265
    Points : 423
    Points
    423
    Par défaut
    acrobat reader existe seulement en 32bits, si ton chrome est en 64bits, ca peut poser problème je pense

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 17
    Points
    17
    Par défaut
    L'ouverture d'un PDF avec Acrobat Reader dans Google Chrome ne pose pas de problème.
    C'est uniquement quand j'essai d'imprimer un PDF à partir d'un iFrame que j'ai ce soucis.

    Et comme dis dans mon premier message, dans Google Agenda, quand on veut imprimer l'agenda, ils arrivent à afficher la boite de dialogue d'impression, en utilisant, de ce que j'ai réussi à voir, le même procéder, càd la création d'un iframe pour lancer l'impression. Après, ils font surement quelque chose d'autre pour que ca marche, mais j'ai du mal à lire leur code javascript

    Merci de ton aide en tout cas

  6. #6
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Je pencherais plutot pour la detection du load
    essaye ce bout de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ifrm.on('load', function() {
        alert('le pdf est chargé');
    });
    il est possible qu'avec un autre lecteur de PDF jquery ne soitr pas capable de determiner le la fin du load ???
    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 !

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 17
    Points
    17
    Par défaut
    Non plus, j'ai bien le alert() qui s'affiche.

    C'est vraiment quand je fais le iframeWindow.print(); que ca ne veut pas afficher la boite de dialogue d'impression, et que ca mouline
    L'affichage du PDF en lui même dans un iframe ou dans un nouvel onglet marche très bien peut importe le plug-in utilisé.

  8. #8
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    iframeWindow.document.print();
    iframeWindow.documentElement.print();
    a tout hasard
    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 !

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 17
    Points
    17
    Par défaut
    Non, j'ai les messages d'erreurs suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    iframeWindow.document.print(); // -> Uncaught TypeError: Object [object HTMLDocument] has no method 'print'
    iframeWindow.documentElement.print(); // -> Uncaught TypeError: Cannot call method 'print' of undefined

  10. #10
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    et avec .content ?
    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 !

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 17
    Points
    17
    Par défaut
    J'ai un peu regardé comment fait Google pour l'impression, et apparemment ils mettent directement le Javascript dans le PDF. Ce qui permet surement d'être sure que le PDF est chargé.

    En ouvrant le PDF généré par Google, il y a bien la ligne qui permet de l'imprimer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <</S/JavaScript/JS(this.print\({bUI: true,bSilent: false,bShrinkToFit: true}\);)>>
    Je vais donc voir cette solution pour ne plus avoir le problème que je rencontre. En esperant que HTML2PDF permette l'insertion du Javascript.

Discussions similaires

  1. [Débutant] VB.NET n'ouvre pas les PDFs avec adobe reader 11
    Par stc074 dans le forum VB.NET
    Réponses: 9
    Dernier message: 08/02/2013, 04h10
  2. Problème ouverture lien PDF avec Adobe Reader X
    Par johan89 dans le forum Microsoft Office
    Réponses: 7
    Dernier message: 17/10/2011, 01h46
  3. Bug: LiveCycle PDF interactif, Adobe Reader
    Par jordano2117 dans le forum Autres Logiciels
    Réponses: 0
    Dernier message: 29/09/2011, 11h08
  4. Problème pour afficher un pdf dans Adobe Reader
    Par jmmaugis dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 20/10/2010, 09h35
  5. Impression .PDF avec adobe
    Par popo68 dans le forum Access
    Réponses: 2
    Dernier message: 26/02/2007, 12h19

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