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

Lazarus Pascal Discussion :

[Windows] Problème d'impression d'image [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre actif
    Avatar de sematimo
    Profil pro
    Inscrit en
    Février 2009
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 287
    Points : 276
    Points
    276
    Par défaut [Windows] Problème d'impression d'image
    Bonjour à tous
    Lors de l'impression d'image sous windows , message 'erreur d'impression' alors que lors d'impression de texte pas de problème.
    j'ai les paquets cairocanvas_pkg, printers4lazide, printerlazarus dans l'inspecteur de projet

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    unit Unit1;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, Forms, Controls, Graphics, printers,osprinters,Dialogs, StdCtrls;
     
    type
     
      { TForm1 }
     
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
     
      public
     
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.lfm}
     
    { TForm1 }
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Scale: double;
      image1:graphics.Tbitmap;
      RR: TRect;
    begin
      image1:=graphics.Tbitmap.Create;
      image1.LoadFromFile('d:\test.bmp');
      with Printer do
      begin
        BeginDoc;
        try
             scale := Printer.PageWidth / image1.Width;
          RR := Rect(0, 0, trunc(Image1.Width * scale), trunc(Image1.Height * Scale));
      canvas.StretchDraw(RR, Image1);
     
        finally
          EndDoc;
        end;
      end;
    end;
     
    end.

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Bonjour,

    pour les problèmes tordus de ce genre, il est bon de lancer l'exécutable depuis la ligne de commande, on a souvent plus d'informations remontées.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #3
    Membre actif
    Avatar de sematimo
    Profil pro
    Inscrit en
    Février 2009
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 287
    Points : 276
    Points
    276
    Par défaut
    J'ai un message 'erreur impression' en provenance de mon imprimante epson.
    Si le lance l'impression depuis photoshop, aucun problème.
    Le problème vient de lazarus ou de mon code.

    " canvas.Draw(0,0,, Image1)" ne fonctionne pas non plus.

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Bonjour,
    L'impression ne se fait-elle pas en dehors de la zone imprimable ?
    A moins que le Printer.PageWidth ne renvoie que la largeur imprimable.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par sematimo Voir le message
    Le problème vient de lazarus ou de mon code.
    C'est bien pour ça que j'ai suggéré de lancer l'application depuis la ligne de commande (pourquoi faut-il que je me répète ?)

    Citation Envoyé par sematimo Voir le message
    " canvas.Draw(0,0,, Image1)" ne fonctionne pas non plus.
    ne fonctionne pas non plus n'est pas un message d'erreur valide...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  6. #6
    Membre actif
    Avatar de sematimo
    Profil pro
    Inscrit en
    Février 2009
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 287
    Points : 276
    Points
    276
    Par défaut
    dès que je lance l'application même en ligne de commande je n'ai aucun message, mon imprimante me renvoi direct une notification "erreur impression" et plante.
    Mon imprimante étant connectée en wifi, je suis obligé de relancer la connexion.
    Mon image de test fait 944*590 pixels avec une résolution de 96 (25 cm sur15.6 cm) .
    Mon imprimante me renvoie: printer.PageWidth=2892 printer.PageHeight=4125 printer.XDPI=360 printer.YDPI=360
    je suis sous windows 11.

    Lors de l'impression de texte, il n'y a pas de problème
    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
    procedure TForm1.Button_printClick(Sender: TObject);
     
    begin
     
    try
      Printer.BeginDoc;
      Printer.Canvas.Font.Name := 'Arial';
      Printer.Canvas.Font.Size := 12;
      Printer.Canvas.Font.Color := clBlack;
        Printer.Canvas.TextOut(100 , 100,'Ceci est un test d''impression');
     
    finally
      Printer.EndDoc;
    end;
    end;

  7. #7
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par sematimo Voir le message
    dès que je lance l'application même en ligne de commande je n'ai aucun message, mon imprimante me renvoie direct une notification "erreur impression" et plante.
    Ça alors ! Tu es bien le premier à qui ça arrive.
    Tu peux encore aller fouiller dans les messages d'erreur de l'ordi (Clic droit sur Poste de travail ou Ce PC ou comment ça s'appelle aujourd'hui et choisir Gérer et fouiner dans les journaux), sinon, la solution doit surement être quelque part là-dedans : https://wiki.lazarus.freepascal.org/Using_the_printer
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  8. #8
    Membre actif
    Avatar de sematimo
    Profil pro
    Inscrit en
    Février 2009
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 287
    Points : 276
    Points
    276
    Par défaut
    Bon je n'ai rien trouvé dans les différents journaux de windows.
    Mon image est imprimée sans problème avec photoshop, gimp, photofiltre studio.
    J'ai voulu essayer avec LazPaint, et là même problème qu'avec mon code.

  9. #9
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Est-ce à dire que l'erreur ne se produit qu'avec un fichier test, ou tous ceux soumis ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  10. #10
    Membre actif
    Avatar de sematimo
    Profil pro
    Inscrit en
    Février 2009
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 287
    Points : 276
    Points
    276
    Par défaut
    j'ai essayé différents bout de code utilisant StretchDraw ou Draw et toujours le même problème.
    J'ai essayé avec l'exemple de lazarus TaChat-print, même problème.

  11. #11
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Si elle n'est pas top-secret, tu devrais poster l'image et le code que tu utilises, parce que là, quand même, c'est fort ce que tu racontes !

    Et je repose la question de Tourlourou d'une autre manière : ça ne le fait qu'avec un seul fichier ou avec plusieurs ?

    Et si plusieurs, est-ce qu'il y en a qui passent bien ? Si oui, c'est quoi la différence avec ceux qui ne passent pas ? Taille ? Résolution ? Autre ?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  12. #12
    Membre actif
    Avatar de sematimo
    Profil pro
    Inscrit en
    Février 2009
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 287
    Points : 276
    Points
    276
    Par défaut
    J'ai essayé avec plusieurs images et toujours le même problème.
    Mon code et les images de test dans le zip
    test print image .zip

  13. #13
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 332
    Points : 4 153
    Points
    4 153
    Par défaut
    Bonjour,

    Si le problème se produit avec d'autres applications développées en Lazarus, c'est ce dernier ou, plus vraisemblablement, l'une des bibliothèques (paquets) qui est en défaut. Utiliser des alternatives... si elles existent.

    Est-ce que le problème se produit avec d'autres imprimantes ?

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  14. #14
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Citation Envoyé par sematimo Voir le message
    J'ai essayé avec plusieurs images et toujours le même problème.
    Mon code et les images de test dans le zip
    test print image .zip
    Bonjour,
    Je travaille sous Windows 10, Lazarus 2.2.6 et j'ai une imprimante EPSON XP-760.

    J'ai téléchargé ton fichier zip, dézippé, compilé et exécuté : d'entrée de jeux, il me dit que le répertoire C:\ ... serge ... n'existe pas alors qu'il n'y est même pas fait mention dans ton code.

    J'ai alors supprimé tous les fichiers sauf :

    project1.lpi, project1.lpr, unit1.pas, unit1.lfm et le dossier "release.

    J'ai recompilé le tout, lancé le programme, appuyé sur le bouton et l'image1 s'est imprimée sans problème.

    Essaie d'en faire autant ..

    Cordialement.

    Pierre.

  15. #15
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    Hello,
    quand on a un problème il est très important de préciser sa configuration ( O.S, version de l'O.S, version de Lazarus, si possible versions des paquets utilisés (ceux où il y a un problème). Cela peut faire gagner pas mal de temps plutôt (pas le chien) que de tourner en rond.
    Ami calmant, J.P (sans T)
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  16. #16
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Quant à moi, étant sous Linux, je ne vais pas être d'une grande aide concernant les impressions, j'ai cependant tenté une manip, histoire de voir ce que donnent tes calculs.

    J'ai donc fait ça, qui n'est probablement pas exact :
    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
    ...
    //image1.LoadFromFile('images\image2.bmp');
      image1.LoadFromFile(Application.Location + 'images/image2.bmp');
      with Printer do begin
        BeginDoc;
        try
          scale := Printer.PageWidth / image1.Width;
          showmessage(inttostr(Printer.PageWidth)); // 2479
          showmessage(inttostr(image1.Width)); // 811
          showmessage(inttostr(round(scale))); // 3
          RR := Rect(0, 0, trunc(image1.Width * scale), trunc(image1.Height * Scale));
          showmessage(inttostr(RR.Left) + ' ' + inttostr(RR.Top) + ' ' + inttostr(RR.Width) + ' ' + inttostr(RR.Height));
          // --> 0 0 2479 1965
          canvas.StretchDraw(RR, Image1);
          showmessage(inttostr(RR.Left) + ' ' + inttostr(RR.Top) + ' ' + inttostr(RR.Width) + ' ' + inttostr(RR.Height));
          // --> 0 0 2479 1965
        finally
          EndDoc;
        end;
      end;
      ...
    Les valeurs 2479 et 1965 donnent une image de 82,8 x 65,7 cm.

    Allez, je repasse la main aux copains sous Windows.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  17. #17
    Membre actif
    Avatar de sematimo
    Profil pro
    Inscrit en
    Février 2009
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 287
    Points : 276
    Points
    276
    Par défaut
    Je suis parti d'un nouveau projet, réécrit le même code et toujours le même problème.

  18. #18
    Membre actif
    Avatar de sematimo
    Profil pro
    Inscrit en
    Février 2009
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 287
    Points : 276
    Points
    276
    Par défaut
    Bon finalement j'ai trouvé. Le problème vient de ma version de windows 11 professionnelle 23H2.
    En effet j'ai testé le même code sous windows 10 et windows 8 et là pas de problème, l'impression se fait correctement.
    Se que je ne comprend pas sous windows 11, avec gimp ou photoshop mes image sont imprimées sans problème.
    Merci à tous.

  19. #19
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 332
    Points : 4 153
    Points
    4 153
    Par défaut
    Bonjour,

    Indépendamment du problème rencontré, le code ne fonctionne correctement que pour une image en format paysage car le calcul de Scale ne s'appuie que sur la largeur.

    Le rectangle peut être plus grand que la page d'une unité : 0 à PageWidth fait PageWidth + 1 si la division tombe juste.

    Ajout : testé sur une imprimante laser sans problème hormis des chemins en absolu que j'ai du corriger.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  20. #20
    Membre actif
    Avatar de sematimo
    Profil pro
    Inscrit en
    Février 2009
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 287
    Points : 276
    Points
    276
    Par défaut
    à l'origine se code était pour imprimer des captures d'écran, les images étant toutes en paysages.
    ce code fonctionne sur mon pc de bureau en windows 8, mais ne fonctionne toujours pas sur mon portable en windows 11.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Batch] Batch Windows et PDFCreator - Impression images email
    Par Tenza06 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 06/03/2014, 13h51
  2. Impression d'image .png
    Par Premium dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 09/10/2006, 16h47
  3. [VS2005][VB.NET] Questions sur l'impression d'images
    Par annedeblois dans le forum Windows Forms
    Réponses: 3
    Dernier message: 14/09/2006, 16h10
  4. Réponses: 9
    Dernier message: 01/06/2006, 08h01
  5. Impression d'image bmp
    Par Invité dans le forum Langage
    Réponses: 6
    Dernier message: 18/07/2002, 09h38

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