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

AppleScript Discussion :

Éviter d'imprimer une page vide. [AppleScript]


Sujet :

AppleScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Réunion

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2013
    Messages : 49
    Par défaut Éviter d'imprimer une page vide.
    Bonjour,

    Je suis désolé, j'ai encore besoin du club.
    Quand j'ai exécuté le programme du mail à imprimer, une deuxième feuille blanche est sortie de l'imprimante. En effet le mail qui comprend l'entête, un paragraphe introductif et le document au format PDF utilise deux pages, alors que seule la première page contient tous les éléments à imprimer. La cause revient sans doute au PDF qui demande une feuille 21x27, même si ce n'est pas nécessaire.
    Je me retrouve donc dans la même situation que MrSpark (discussion : Sélection de page à l'impression du 21/11/2013), parce qu'il me faut sélectionner que la première page dans l'aperçu avant impression.

    Quelles sont donc les instructions à introduire entre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tell application "System Events"
    keystroke "p" using {command down}
    qui fait apparaitre le formulaire de l'aperçu avant impression,
    pour sélectionner les options et pour moi seulement avec Pages le bouton de 1 à 1.

    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    delai 0,25 
    keystroke return
    end tell
    qui lance l'impression.

    A partir de la réponse de Pbell à la discussion de MrSpark, j'ai bien cherché à bidouiller quelque chose, rien n'y fait.

    Merci pour votre aide.

    Cordialement

    JF Zuinghedau

  2. #2
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Bonjour,
    Ta question se heurte aux limites de l'interface utilisateur et il n'y a pas de réponse simple.

    En effet, la simulation au clavier indiquée dans la discussion précédente ne peut que faire de la simulation sur ce qui existe.
    En l'occurrence, lorsque tu demandes à imprimer en direct sur Mail, tu vas voir que le dialogue d'impression peut avoir 2 formes:
    - l'une avec tous les details. si c'est ton cas par défaut, parfait.
    - l'autre sans aucun paramètres.

    Passer de l'un à l'autre est possible mais demande de simuler un click sur triangle à droite du nom de l'imprimante pour "déployer" ce dialogue, et de vérifier son état avant.
    Si tu le laisses déployé par défaut, le script ci-dessous réponds à ta question.
    Si par mégarde tu re-clique sur ce triangle, le prochain appel au script ne fonctionnera pas.

    Sur ma version, dialogue déployé, il faut que je tape 2 fois la touche tabulation, puis la touche "1" (bien que la valeur "page de : " soit par défaut à 1, la frappe de la touche 1 force le petit bouton devant !).

    A titre d'exemple voici 2 fois tabulation suivi de "1" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    set tab to ASCII character 9tell application "System Events"
    keystroke "p" using {command down}
        delay 0.5
    keystroke tab
    keystroke tab
    keystroke "1"
    keystroke return
    end tell
    Cordialement

  3. #3
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Réunion

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2013
    Messages : 49
    Par défaut
    Bonjour,

    Je te remercie infiniment PBell pour ton aide; je ne pouvais trouver seul la solution, quoique dans la suite logique de ta première réponse. J'ai beaucoup appris et je serai m'en servir.

    Par tes deux réponses, mon programme "courrier" est parfait : - envoi du mail par internet, - impression du mail, pour sa confirmation écrite et l'envoi postal. (Internet est libre, l'écrit est serve).

    Dans la logique de ta réponse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    1 set tab to ASCII character 9tell application "System Events"
    2 keystroke "p" using {command down}
    3 delay 0.5
    4 keystroke tab
    5 keystroke tab
    6 keystroke "1"
    7 keystroke return
    8 end tell
    Si on met dans le code en ligne 4
    On demande deux copies du mail, parce que la position par défaut, dans l'aperçu avant impression de Mail (les options de l'aperçu diffèrent d'un logiciel à l'autre), est le nombre de copie positionné sur 1.

    Donc en ligne 4 l'instruction sert de passer de l'option Copies à Pages, avec le curseur qui se place sur le numéro de la première page à imprimer, par défaut 1.
    celles de la ligne 5 à la dernière page à imprimer, que tu initialises à 1. Et ainsi de suite.

    Pour résumer le programme ci-dessous ferait 2 copies du mail de la page 6 à 9 (le texte du mail pourrait avoir 10 pages par exemple). Et ainsi on répond totalement à la discussion de MrSpart.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    1 set tab to ASCII character 9tell application "System Events"
    2 keystroke "p" using {command down}
    3 delay 0.5
    4 keystroke "2"
    5 keystroke tab
    6 keystroke "6"
    7 keystroke tab
    8 keystroke "9"
    9 keystroke return
    10 end tell
    Est-ce généralisable ? Bien que dans ta réponse à MrSpart tu ne recommandes pas "de simuler l'action clavier " quand une commande est scriptable.

    Cordialement.

    jf Zuinghedau

  4. #4
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Bonjour Jefmonde,
    Ton code est parfait car il fait ce que tu souhaites. Super !

    Effectivement, il faut éviter la simulation via le System Event car elle est tributaire de l'interface utilisateur. Si, lors d'une prochaine mis à jour de mail, ou du système ou encore des dialogues d'impression, les éléments nombre de pages, page de ... à ... changent de place, le script ne fonctionnera plus.
    C'est pourquoi il est toujours recommandé d'utiliser les commandes script directes à la place des éléments UI (User Interface).

    Dans le cas de mail, il n'y a pas de commande scriptable pour l'impression, donc tu n'as pas le choix.
    Mais il faut t'en souvenir si un jour ton script ne fonctionne plus !

    Enfin, j'avais précisé que le script (comme le tiens) suppose que le dialogue d'impression est déployé.
    Si ce n'est pas le cas, le script ne fonctionnera pas.
    Le petit morceau de code ci-dessus, ajouté dans ton script, permettra de vérifier si le dialogue est déployé et sinon, de le déployer par un click sur le bouton adéquat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    tell application "System Events"keystroke "p" using {command down} -- ouvre le dialogue d'impression
        delay 0.5
        tell application process "Mail" to tell sheet 1 of front window
    -- test si le dialogue d'impression est déployé. Si non, click pour le déployer
            if (accessibility description of checkbox 1 is "Déploiement de la zone de dialogue Imprimer") and (value of checkbox 1 = 0) then
    clickcheckbox 1
            end if
        end tell
    -- mettre ici la suite des instructions avec la touche tab et les valeurs souhaitées    
    end tell
    Cordialement

  5. #5
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Réunion

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2013
    Messages : 49
    Par défaut
    Merci infiniment PBell pour ton aide et pour la cerise sur le gâteau " ce bout de code qui permet de vérifier si le dialogue est déployé ".
    J'ai gagné du temps et surtout j'ai compris comment procéder.

    Cordialement

    jf Zuingheau

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

Discussions similaires

  1. imprimer une page
    Par somatino dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 21/03/2006, 20h45
  2. Imprimer une page html
    Par rod59 dans le forum C++Builder
    Réponses: 4
    Dernier message: 29/09/2005, 07h45
  3. Imprimer une page en mode paysage
    Par twizell dans le forum ASP
    Réponses: 2
    Dernier message: 13/09/2005, 22h01
  4. imprimer une page Web sans qu'elle ne s'affiche
    Par Mehdi Feki dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 21/07/2005, 20h07
  5. [VB.NET] Imprimer une page aspx
    Par sehing dans le forum ASP.NET
    Réponses: 3
    Dernier message: 22/04/2005, 14h44

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