NSDocument et impression de WebView

Bonjour,


 


Je cherche à  imprimer le contenu d'une webview dans une appli "Document".


 


J'ai donc utilisé la méthode



- (NSPrintOperation *)printOperationWithSettings:(NSDictionary *)ps
error:(NSError **)e

mais problème la webview n'est pas forcément fini de chargé à  ce moment là .


 


Comment puis-je attendre 



- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame

que le chargement soit fini au sein de la fonction printOperationWithSettings (qui doit renvoyer une NSPrintOperation valide.


 


Merci pour votre aide.


 


Réponses

  • Ben il faut mettre le print dans la méthode de délégué que tu as cité.




  • Ben il faut mettre le print dans la méthode de délégué que tu as cité.




    Merci pour ta réponse. Ok, mais comment je fais pour attendre que tout soit pret pour renvoyer un printoperation correct dans la première?


     


    Merci

  • AP, par curiosité j'ai cliqué sur le lien dans ta signature. Cela pointe sur une application Mac App Store NON présente sur le Store français ! Pourquoi garder ça dans ta signature ?

  • AliGatorAliGator Membre, Modérateur


    Merci pour ta réponse. Ok, mais comment je fais pour attendre que tout soit pret pour renvoyer un printoperation correct dans la première?


    Merci

    Pourquoi ne pas mettre un booléen à  YES dans la methode de délégate et le tester dans l'autre ?!


  • AP, par curiosité j'ai cliqué sur le lien dans ta signature. Cela pointe sur une application Mac App Store NON présente sur le Store français ! Pourquoi garder ça dans ta signature ?




    Ah oui c'est très bête ca, je vais mettre ca à  jour tout de suite. Merci.



  • Pourquoi ne pas mettre un booléen à  YES dans la methode de délégate et le tester dans l'autre ?!




     Question bête, j'ai essayé de faire un tel truc avec une run loop mais je rien ne fonctionne. Comment ferais-tu pour attendre le changement de valeur du booléen sans bloquer?


     


    Merci pour ton aide.

  • AliGatorAliGator Membre, Modérateur
    décembre 2014 modifié #8
    Pourquoi veux-tu attendre ?


    La methode printOperationWithSettings retourne une valeur de façon synchrone, donc soit tu bloques pour attendre jusqu'à  ce que ce soit chargé, ce qui est une mauvaise idée car ça va tout bloquer, soit tu fais autrement.


    En fait je pense que tu n'abordes pas le problème du bon angle. La question n'est pas comment attendre dans la methode printOperation tant que la page n'est pas chargée, mais comment empêcher que printOperation ne soit appelé / empêcher que l'utilisateur demande d'imprimer avant que la page ne soit chargée.


    La réponse est alors simple : il suffit de griser/désactiver l'article de menu "Imprimer" jusqu'à  ce que la methode de delegate de la WebView ait été appelée.


  • Pourquoi veux-tu attendre ?


    La methode printOperationWithSettings retourne une valeur de façon synchrone, donc soit tu bloques pour attendre jusqu'à  ce que ce soit chargé, ce qui est une mauvaise idée car ça va tout bloquer, soit tu fais autrement.


    En fait je pense que tu n'abordes pas le problème du bon angle. La question n'est pas comment attendre dans la methode printOperation tant que la page n'est pas chargée, mais comment empêcher que printOperation ne soit appelé / empêcher que l'utilisateur demande d'imprimer avant que la page ne soit chargée.


    La réponse est alors simple : il suffit de griser/désactiver l'article de menu "Imprimer" jusqu'à  ce que la methode de delegate de la WebView ait été appelée.




    en fait je veux attendre car la webview ne contient que le rendu du document. La création du document elle, est gérée dans une autre vue (non imprimable).


    Du coup dans méthode print operation je lance le rendu (chargement dans la webview), qui est quasi instantané (mais nécessite quand même une petite attente)

Connectez-vous ou Inscrivez-vous pour répondre.