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

Windows Discussion :

[Impression]Caractère de saut de ligne


Sujet :

Windows

  1. #1
    Membre régulier Avatar de Luffy Duck
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 165
    Points : 120
    Points
    120
    Par défaut [Impression]Caractère de saut de ligne
    Bonjour à tous,

    j'essaie d'imprimer une chaine de caractère directement en l'envoyant au spooler grâce au API Win32, mais les '\n' ne font pas passer à la ligne suivante. Il s'imprime juste un carré à la place.

    j'ai essayé de mettre '\r\n', mais là j'ai deux carrés

    donc si quelqu'un sait ce qu'il faut mettre, merci =)

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 380
    Points : 41 576
    Points
    41 576
    Par défaut
    Normalement, sous Windows, c'est bien \r\n (dans cet ordre) qui est utilisé, notamment pour les fichiers texte.

    Mais peut-être l'API du spooler d'impression est-elle un cas particulier...

  3. #3
    Membre régulier Avatar de Luffy Duck
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 165
    Points : 120
    Points
    120
    Par défaut
    Normalement, sous Windows, c'est bien \r\n (dans cet ordre) qui est utilisé
    C'est bien ce que je croyais... mais non !

    j'utilise la fonction TextOut(), et il n'y a aucune remarque à ce sujet sur la msdn.

    Evidemment, ça le fait sur toutes les imprimantes installées.

    bizarre...

  4. #4
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 703
    Points
    10 703
    Billets dans le blog
    3
    Par défaut
    Tu n'envoie pas du texte, tu le dessines. Un saut de ligne ne se dessine pas. C'est à toi à dessiner la 2° ligne plus bas.
    Tu peux jeter un oeil à DrawText[Ex] qui est + puissante.

  5. #5
    Membre régulier Avatar de Luffy Duck
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 165
    Points : 120
    Points
    120
    Par défaut
    Tu n'envoie pas du texte, tu le dessines.

    Tout est dit ! je n'avais pas compris ça comme ça. Pour moi on envoyait le texte et le driver faisait le reste. Mais pas du tout.

    Et je vois maintenant l'utilité des 2 deux entiers qu'il faut passer en paramètres (hauteur et gauche).

    Bon je fais un tour sur la msdn, et je reviens par là

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    et si tu veux gérer une notion de passage à la ligne ,il te faudra calculer la hauteur de ta fonte pour faire position sur les Y + hauteur fonte pour simuler un passage à la ligne...

  7. #7
    Membre régulier Avatar de Luffy Duck
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 165
    Points : 120
    Points
    120
    Par défaut
    Salut, oui c'est ce que je vois. Et ce que je vois également c'est que ce n'est pas simple du tout ! Il n'y a pas un moyen d'envoyer directement la chaine ou bien imprimer un fichier ?

    En fait avant je passais par la fonction system(), et j'imprimais le fichier en passant par une commande DOS. Le problème est que je n'avais aucun retour de l'impression, si elle s'était bien passée ou non. et puis c'est pas très propre.

    Mais là, j'avoue que ça devient compliqué. Enfin, je vais bien y arriver =)

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 180
    Points : 90
    Points
    90
    Par défaut
    Ca alors j'étais sur le point de poster pour un truc similaire lorsque j'ai trouvé la soluction!!
    Si une imprimante marche de la même façon qu'un écran (pour le dessin), je te conseille vivement la fonction DrawText()!
    Du même genre que TextOut, elle te permet surtout de dessiner sur plusieurs lignes!
    Tu définit un , c'est à dire un rectangle dans lequel tu va écrire!
    Libre à toi de faire autant de retours à la ligne que tu veux (tant que ça tient dans le rectangle).
    Ca marche bien sur un écran alors pourquoi pas sur une imprimante (d'ailleurs il faudra que j'essaie!).
    Bon pour la fonction DrawText je te conseille vivement de te reporter à la documentation de l'ApiWin32. (si tu n'as pas VisualC++, sache qu'il existe un pach pour DevC++ où tu peux télécharger cette doc! (en anglais!)

    Bonne chance!

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 180
    Points : 90
    Points
    90
    Par défaut
    Ah, j'allais oublier!
    Je ne sais pas si tu sais (moi je viens d'apprendre il y'a moins de dix minutes) mais '\r\n' n'est pas un caractère unique!
    Si tu déclare char par char dans un tableau de char (ouh, c'est compliqué!)
    tu dois écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        towrite[0]='b';
        towrite[1]='\r';
        towrite[2]='\n';
        towrite[3]='d';
        towrite[4]='\0';
    si tu écris towrite='\r\n' et que tu l'enregistre dans un fichier (ca doit être pareil si tu imprime) ça ne sert à rien : tu vois un carré à la place du retour à la ligne.

    J'espère que tu t'en sors!

    Spartan03

  10. #10
    Membre régulier Avatar de Luffy Duck
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 165
    Points : 120
    Points
    120
    Par défaut
    salut =)

    en ce qui concerne le rectangle, tu veux dire qu'on définit un rectangle de 1000*1000 par exemple, et qu'on écrit ce qu'on veut dedans ? Avec les retours chariots et compagnie ?

    bonne piste. je teste ça et je tiens au courant.

  11. #11
    Membre régulier Avatar de Luffy Duck
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 165
    Points : 120
    Points
    120
    Par défaut
    Désolé du retard...

    Alors en fait j'utilise les méthodes que j'ai trouvé sur cet exemple de la msdn : http://support.microsoft.com/kb/138594/

    Le seul problème, c'est qu'il ne gère que l'ASCII en 7 bits, mais mon imprimante aussi (c'est pour imprimer des étiquettes).

    les '\r\n' sont gérés, donc problème résolu. merci à tous

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

Discussions similaires

  1. Intercepter caractère de saut de ligne "CRLF" dans une chaine
    Par Tony-ESAIP dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 12/08/2014, 11h09
  2. Réponses: 18
    Dernier message: 24/06/2011, 15h13
  3. Réponses: 2
    Dernier message: 20/07/2009, 15h07
  4. Introduction de saut de ligne en amont d'un caractère
    Par Fedaykin7 dans le forum Langage
    Réponses: 2
    Dernier message: 03/02/2006, 10h01
  5. problème avec le caractère saut de ligne ...
    Par vbcasimir dans le forum Administration
    Réponses: 2
    Dernier message: 17/06/2004, 16h35

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