FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Kgf et Imprimante Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Kgf et Imprimante Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Kgf et Imprimante Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Kgf et Imprimante Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Kgf et Imprimante Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Kgf et Imprimante Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Kgf et Imprimante Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Kgf et Imprimante Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Kgf et Imprimante Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Kgf et Imprimante Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Kgf et Imprimante Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Kgf et Imprimante Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Kgf et Imprimante Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Kgf et Imprimante Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Kgf et Imprimante Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -17%
(Black Friday) Apple watch Apple SE GPS + Cellular ...
Voir le deal
249 €

 

 Kgf et Imprimante

Aller en bas 
5 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Kgf et Imprimante Empty
MessageSujet: Kgf et Imprimante   Kgf et Imprimante EmptyVen 21 Mai 2021 - 14:41

Au secours Klaus !

Cela fait une éternité que je ne me suis pas servi des fonctions d'impression
et je me suis perdu dans toutes les fonctions de kgf. Shocked

Je cherche à récupérer la résolution d'impression de l'imprimante.
Pourrais tu m'indiquer le chemin vers la lumière ?
Laughing
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Kgf et Imprimante Empty
MessageSujet: Re: Kgf et Imprimante   Kgf et Imprimante EmptyVen 21 Mai 2021 - 16:50

Salut Yannick,

Klaus est absent pour le moment, alors si tu veux voilà une petite sub de mes archives
(utilisation de la DLL de l'ami Klaus) qui te donnera pas mal de renseignements sur ton imprimante.
Paramètres: orient% = 0 si Portrait, = 1 si Paysage
                 prn$ = "" si c'est l'imprimante par défaut, sinon nom de l'imprimante.
Code:
SUB Pr_infos(orient%,prn$)
  ' Initialisation imprimante ('début d'impression')
  ' orient% = 0 Portrait, = 1 Paysage
  ' prn$ = "": imprimante par défaut
  '            sinon nom de l'imprimante (pour essais)
  '            par exemple "Microsoft XPS Document Writer" impression virtuelle
  '            dans un fichier .XPS
  ' Dans les paramètres des fonctions, le positionnement initial doit être fait en
  ' valeurs absolues: distances par rapport aux bords gauche et haut de la feuille
  ' A4, sans tenir compte des marges non imprimables.
  ' Les couleurs sont à exprimer au format BGR (en non pas RGB): B*256*256+G*256+R
  DLL_ON "C:\PANORAMIC\KGF\KGF.dll"
  IF VARIABLE("phnd%") = 0 THEN DIM phnd%
  IF VARIABLE("chnd%") = 0 THEN DIM chnd%
  IF VARIABLE("inip%") = 0 THEN DIM inip%
  IF VARIABLE("Pr_res%") = 0 THEN DIM Pr_res%
  IF VARIABLE("Pr_px%") = 0 THEN DIM Pr_px%: ' pixels par mm (600 dpi)
  IF VARIABLE("Pr_lt%") = 0 THEN DIM Pr_lt%: ' largeur totale
  IF VARIABLE("Pr_ht%") = 0 THEN DIM Pr_ht%: ' hauteur totale
  IF VARIABLE("Pr_rh%") = 0 THEN DIM Pr_rh%: ' résolution H
  IF VARIABLE("Pr_rv%") = 0 THEN DIM Pr_rv%: ' résolution V
  IF VARIABLE("Pr_mg%") = 0 THEN DIM Pr_mg%: ' marge gauche
  IF VARIABLE("Pr_mh%") = 0 THEN DIM Pr_mh%: ' marge haut
  IF VARIABLE("Pr_lu%") = 0 THEN DIM Pr_lu%: ' largeur utile
  IF VARIABLE("Pr_hu%") = 0 THEN DIM Pr_hu%: ' hauteur utile
  IF prn$ <> "": ' pour essais sans impression réelle
      Pr_res%=DLL_CALL4("PrinterManager",10,ADR(phnd%),ADR(chnd%),ADR(prn$))
  END_IF
  ' Orientation portrait (0) ou paysage (1)
  Pr_res% = DLL_CALL4("PrinterManager",4,ADR(phnd%),ADR(chnd%),orient%): ' orientation
  Pr_res% = DLL_CALL4("PrinterManager",1,ADR(phnd%),ADR(chnd%),0): ' init
  ' Dimensions sans les marges, en pixels:
  ' ==========
  ' ATTENTION: Les dimensions sont actualisées en fonction de l'option orientation !
  ' ==========
  Pr_lt% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),3,0,0): ' largeur totale
  Pr_ht% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),4,0,0): ' hauteur totale
  IF orient% = 0
      Pr_px% = Pr_ht%/297: ' pixels par mm, à l'impression en 600 dpi
  ELSE
      Pr_px% = Pr_lt%/297: ' idem (paysage)
  END_IF
  ' Résolution d'impression (pixels par pouce)
  Pr_rh% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),5,0,0): ' pix./pouce H
  Pr_rv% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),6,0,0): ' pix./pouce H
  ' Marges non imprimables: décalage en pixels à soustraire gauche et haut:
  Pr_mg% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),1,0,0): ' marge gauche
  Pr_mh% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),2,0,0): ' marge haut
  ' Dimensions utiles, en pixels:
  IF Pr_mg% = 0 OR Pr_mh%= 0: ' cas imprimante virtuelle (PDFCreator)
      Pr_mg% = 75: Pr_mh% = 75: ' forçage comme imprimante réelle
      Pr_lu% = Pr_lt% - 2*Pr_mg%: Pr_hu% = Pr_ht% - 2*Pr_mh%
  ELSE
      Pr_lu% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),7,0,0): ' largeur utile
      Pr_hu% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),8,0,0): ' hauteur utile
  END_IF
END_SUB
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Kgf et Imprimante Empty
MessageSujet: re   Kgf et Imprimante EmptyVen 21 Mai 2021 - 19:05

Merci JL35 !

Cà c'est une sub musclée  Laughing

J'espère que nôtre ami Klaus va bien et que nous allons pouvoir le relire très vite.
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Kgf et Imprimante Empty
MessageSujet: Re: Kgf et Imprimante   Kgf et Imprimante EmptyVen 21 Mai 2021 - 19:46

Et encore c'est rien, tu verrais le bonhomme !
Pour Klaus, bien sûr j'espère aussi, mais je pense qu'il doit avoir d'autres occupations.

Pour la sub, évidemment le chemin de KGF.DLL est à adapter.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Kgf et Imprimante Empty
MessageSujet: Re: Kgf et Imprimante   Kgf et Imprimante EmptyVen 21 Mai 2021 - 20:33

Merci de vous soucier de moi, les amis ! Je vais bien, malgré quelques petits ennuis, mais rien qui me menace essentiellement. Et surtout rien me bloque pour programmer. Sauf ce sanaté Winsows 10 - lors de chaque mise à jour majeure (en gros deus fois par an !), Windows efface ma licence de Delphi. Et je galère chaquye fois pour tout réinstaller et récupérer une licence valide. J'en suis là, pour le moment.

En ce qui concerne la résolution de l'imprimante, JL35 a donné une sub qui montre parfaitement comment on gère ce genre de problème. N'hésite pas à consulter la doc (KGF.chm ou la doc en ligne (via ma signature) concernant ces fonctions. J'ai fait un gros effort de documentation, en son temps, et le logiciel n'a pas changé depuis.

Et dès que j'aurai récupéré ma licence, je serai à nouveau ouvert à toutes suggestions ou demandes... En attendant, je consulte le forum tous les jours.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Kgf et Imprimante Empty
MessageSujet: Re: Kgf et Imprimante   Kgf et Imprimante EmptyVen 21 Mai 2021 - 20:55

Merci pour les nouvelles Klaus, ça nous fait plaisir.
Perso j'utilise aussi ton WinTextPrint qui est un peu à l'écart (indépendant de KGF.dll) mais qui convient très
bien à mes besoins.
Je suis passé deux fois sous Windows 10 pour revenir à Windows 7 suite à des inconvénients.
Je serai bien obligé d'y passer un jour, mais j'attends d'y être forcé...
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Kgf et Imprimante Empty
MessageSujet: Re: Kgf et Imprimante   Kgf et Imprimante EmptyVen 21 Mai 2021 - 22:53

@Klaus
Essaie de mettre Delphi hors répertoires contrôlés par l’UAC de Windows.
Autrement dit installer Delphi dans un autre dossier que Program Files ou Program Files x86, par exemple :  c:\Borland\Delphi7
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Kgf et Imprimante Empty
MessageSujet: Re: Kgf et Imprimante   Kgf et Imprimante EmptySam 22 Mai 2021 - 2:21

J'ai déjà essayé, ça. Mais ce n'est pas le problème. Tous les fichiers sont parfaitement conservés, y conpris les clés de reistre dans Windows. Mais la licence est enregistrée ailleurs, et je n'arrive pas savoir où. Mais j'arriverai à tout récupérer, comme je l'ai déjà fait 5 ou 6 fois...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Kgf et Imprimante Empty
MessageSujet: re   Kgf et Imprimante EmptySam 22 Mai 2021 - 4:04

Il va falloir que je replonge dans mes archives  study pour me rappeler 
comment on se sert de toutes ses fonctions. scratch
Actuellement je n'arrive pas à avoir de résultat. Mad
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Kgf et Imprimante Empty
MessageSujet: Re: Kgf et Imprimante   Kgf et Imprimante EmptySam 22 Mai 2021 - 9:21

Et si tu lances simplement ce petit programme (avec la sub ci-dessus), ça ne donne rien ?
(l'imprimante est éteinte)
Code:
Pr_infos(0,"")
FONT_SIZE 0,10
PRINT: PRINT "mprimante par défaut :"
PRINT "Résolution horizontale = "+STR$(Pr_lt%)+" pixels"
PRINT "Résolution verticale     = "+STR$(Pr_ht%)+" pixels."
END

SUB Pr_infos(orient%,prn$)
  ' Initialisation imprimante ('début d'impression')
  ' orient% = 0 Portrait, = 1 Paysage
  ' prn$ = "": imprimante par défaut
  '            sinon nom de l'imprimante (pour essais)
  '            par exemple "Microsoft XPS Document Writer" impression virtuelle
  '            dans un fichier .XPS
  ' Dans les paramètres des fonctions, le positionnement initial doit être fait en
  ' valeurs absolues: distances par rapport aux bords gauche et haut de la feuille
  ' A4, sans tenir compte des marges non imprimables.
  ' Les couleurs sont à exprimer au format BGR (en non pas RGB): B*256*256+G*256+R
  DLL_ON "C:\PANORAMIC\KGF\KGF.dll"
  IF VARIABLE("phnd%") = 0 THEN DIM phnd%
  IF VARIABLE("chnd%") = 0 THEN DIM chnd%
  IF VARIABLE("inip%") = 0 THEN DIM inip%
  IF VARIABLE("Pr_res%") = 0 THEN DIM Pr_res%
  IF VARIABLE("Pr_px%") = 0 THEN DIM Pr_px%: ' pixels par mm (600 dpi)
  IF VARIABLE("Pr_lt%") = 0 THEN DIM Pr_lt%: ' largeur totale
  IF VARIABLE("Pr_ht%") = 0 THEN DIM Pr_ht%: ' hauteur totale
  IF VARIABLE("Pr_rh%") = 0 THEN DIM Pr_rh%: ' résolution H
  IF VARIABLE("Pr_rv%") = 0 THEN DIM Pr_rv%: ' résolution V
  IF VARIABLE("Pr_mg%") = 0 THEN DIM Pr_mg%: ' marge gauche
  IF VARIABLE("Pr_mh%") = 0 THEN DIM Pr_mh%: ' marge haut
  IF VARIABLE("Pr_lu%") = 0 THEN DIM Pr_lu%: ' largeur utile
  IF VARIABLE("Pr_hu%") = 0 THEN DIM Pr_hu%: ' hauteur utile
  IF prn$ <> "": ' pour essais sans impression réelle
      Pr_res%=DLL_CALL4("PrinterManager",10,ADR(phnd%),ADR(chnd%),ADR(prn$))
  END_IF
  ' Orientation portrait (0) ou paysage (1)
  Pr_res% = DLL_CALL4("PrinterManager",4,ADR(phnd%),ADR(chnd%),orient%): ' orientation
  Pr_res% = DLL_CALL4("PrinterManager",1,ADR(phnd%),ADR(chnd%),0): ' init
  ' Dimensions sans les marges, en pixels:
  ' ==========
  ' ATTENTION: Les dimensions sont actualisées en fonction de l'option orientation !
  ' ==========
  Pr_lt% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),3,0,0): ' largeur totale
  Pr_ht% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),4,0,0): ' hauteur totale
  IF orient% = 0
      Pr_px% = Pr_ht%/297: ' pixels par mm, à l'impression en 600 dpi
  ELSE
      Pr_px% = Pr_lt%/297: ' idem (paysage)
  END_IF
  ' Résolution d'impression (pixels par pouce)
  Pr_rh% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),5,0,0): ' pix./pouce H
  Pr_rv% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),6,0,0): ' pix./pouce H
  ' Marges non imprimables: décalage en pixels à soustraire gauche et haut:
  Pr_mg% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),1,0,0): ' marge gauche
  Pr_mh% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),2,0,0): ' marge haut
  ' Dimensions utiles, en pixels:
  IF Pr_mg% = 0 OR Pr_mh%= 0: ' cas imprimante virtuelle (PDFCreator)
      Pr_mg% = 75: Pr_mh% = 75: ' forçage comme imprimante réelle
      Pr_lu% = Pr_lt% - 2*Pr_mg%: Pr_hu% = Pr_ht% - 2*Pr_mh%
  ELSE
      Pr_lu% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),7,0,0): ' largeur utile
      Pr_hu% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),8,0,0): ' hauteur utile
  END_IF
END_SUB

Kgf et Imprimante Exem10
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Kgf et Imprimante Empty
MessageSujet: re   Kgf et Imprimante EmptySam 22 Mai 2021 - 18:22

cheers Merci JL35, 
ca y est cela fonctionne : 2976x4209
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Kgf et Imprimante Empty
MessageSujet: Re: Kgf et Imprimante   Kgf et Imprimante EmptySam 22 Mai 2021 - 21:05

Tu me rassures, et c'est bien le bon rapport (racine de 2, proportions d'une feuille A4).
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Kgf et Imprimante Empty
MessageSujet: re   Kgf et Imprimante EmptyDim 23 Mai 2021 - 12:22

Pas tant que ca :

Code:
 Pr_rh% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),5,0,0): ' pix./pouce H
 Pr_rv% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),6,0,0): ' pix./pouce H

me renvoies 0  scratch
et c'est celle là qui m'intéressent  Wink

Le but du jeu est de pouvoir savoir quelles dimensions fera un Picture en mm 
à l'impression avec l'imprimante par défaut.
Il me faut donc la résolution ppp/dpi de l'imprimante.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Kgf et Imprimante Empty
MessageSujet: Re: Kgf et Imprimante   Kgf et Imprimante EmptyDim 23 Mai 2021 - 14:06

Voici un extrait de l'aide pour PrinterFuunction:
Code:
       8 = retourner une dimension de la feuille
                opt1% = code de la valeur à retourner
                         1       PHYSICALOFFSETX    décalage horizontal en pixel
                         2       PHYSICALOFFSETY    décalage vertical en pixel
                         3       PHYSICALWIDTH         largeur totale en pixel
                         4       PHYSICALHEIGHT       hauteur totale en pixel
                         5       LOGPIXELSX                résolution horizontale en pixels/pouce
                         6       LOGPIXELSY                résolution verticale en pixels/pouce
                         7       HORZRES                     largeur utile en pixels
                         8       VERTRES                      hauteur utile en pixels
                         9       HORZSIZE                     largeur utile en millimètres
                        10       VERTSIZE                    hauteur utile en millimètres
Et si tu utilisais les codes 7 et 9 pour avoir la largeur utile en pixels et millimètres, ainsi que 8 et 10 pour la partie verticale ?

Si tu divises le résultat du code 7 par le résultat du code 9, tu as le facteur horizontal de propoartionalité (résultat bien sûr à mettre dans un flottant, pas dans un entier !). Idem pour le facteur vertical. Ensuite, il ne reste plus qu'à multiplier ta mesure en millimètres par ces facteurs pour trouver les coordonnées en pixels...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Kgf et Imprimante Empty
MessageSujet: Re: Kgf et Imprimante   Kgf et Imprimante EmptyDim 23 Mai 2021 - 14:31

Bizarre quand même !
Si j"appelle la sub comme ceci:
Code:
Pr_infos(0,"")
FONT_SIZE 0,10
FONT_NAME 0,"Lucida Console": FONT_SIZE 0,10
PRINT: PRINT " Imprimante par défaut :"
      PRINT " ====================="
PRINT " Résolution horizontale = "+STR$(Pr_lt%)+" pixels"
PRINT " Résolution verticale  = "+STR$(Pr_ht%)+" pixels."
PRINT " Largeur totale        = "+STR$(Pr_lt%)+" pixels"
PRINT " Hauteur totale        = "+STR$(Pr_ht%)+" pixels"
PRINT " Largeur utile          = "+STR$(Pr_lu%)+" pixels"
PRINT " Hauteur utile          = "+STR$(Pr_hu%)+" pixels"
print " Définition Horizontale = "+STR$(Pr_rh%)+" pixels/pouce"
print " Définition Verticale  = "+STR$(Pr_rv%)+" pixels/pouce"
Print " pixels/millimètre      = "+STR$(Pr_px%)
END

J'obtiens bien:
Kgf et Imprimante Imgp310


Dernière édition par JL35 le Dim 23 Mai 2021 - 14:57, édité 2 fois
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Kgf et Imprimante Empty
MessageSujet: Re: Kgf et Imprimante   Kgf et Imprimante EmptyDim 23 Mai 2021 - 14:43

Voici ce que ça donne chez moi:
Code:

Pr_infos(0,"")

FONT_SIZE 0,10
PRINT: PRINT "Imprimante par défaut :"
PRINT "Résolution horizontale = "+STR$(Pr_lt%)+" pixels"
PRINT "Résolution verticale    = "+STR$(Pr_ht%)+" pixels."
print "p/pouce H    = "+STR$(Pr_rh%)
print "p/pouce V    = "+STR$(Pr_rv%)
Print "p/millimètre = "+STR$(Pr_px%)
END



SUB Pr_infos(orient%,prn$)
  ' Initialisation imprimante ('début d'impression')
  ' orient% = 0 Portrait, = 1 Paysage
  ' prn$ = "": imprimante par défaut
  '            sinon nom de l'imprimante (pour essais)
  '            par exemple "Microsoft XPS Document Writer" impression virtuelle
  '            dans un fichier .XPS
  ' Dans les paramètres des fonctions, le positionnement initial doit être fait en
  ' valeurs absolues: distances par rapport aux bords gauche et haut de la feuille
  ' A4, sans tenir compte des marges non imprimables.
  ' Les couleurs sont à exprimer au format BGR (en non pas RGB): B*256*256+G*256+R
'  DLL_ON "C:\PANORAMIC\KGF\KGF.dll"
  DLL_ON "KGF.dll"
  IF VARIABLE("phnd%") = 0 THEN DIM phnd%
  IF VARIABLE("chnd%") = 0 THEN DIM chnd%
  IF VARIABLE("inip%") = 0 THEN DIM inip%
  IF VARIABLE("Pr_res%") = 0 THEN DIM Pr_res%
  IF VARIABLE("Pr_px%") = 0 THEN DIM Pr_px%: ' pixels par mm (600 dpi)
  IF VARIABLE("Pr_lt%") = 0 THEN DIM Pr_lt%: ' largeur totale
  IF VARIABLE("Pr_ht%") = 0 THEN DIM Pr_ht%: ' hauteur totale
  IF VARIABLE("Pr_rh%") = 0 THEN DIM Pr_rh%: ' résolution H
  IF VARIABLE("Pr_rv%") = 0 THEN DIM Pr_rv%: ' résolution V
  IF VARIABLE("Pr_mg%") = 0 THEN DIM Pr_mg%: ' marge gauche
  IF VARIABLE("Pr_mh%") = 0 THEN DIM Pr_mh%: ' marge haut
  IF VARIABLE("Pr_lu%") = 0 THEN DIM Pr_lu%: ' largeur utile
  IF VARIABLE("Pr_hu%") = 0 THEN DIM Pr_hu%: ' hauteur utile
  IF prn$ <> "": ' pour essais sans impression réelle
      Pr_res%=DLL_CALL4("PrinterManager",10,ADR(phnd%),ADR(chnd%),ADR(prn$))
  END_IF
  ' Orientation portrait (0) ou paysage (1)
  Pr_res% = DLL_CALL4("PrinterManager",4,ADR(phnd%),ADR(chnd%),orient%): ' orientation
  Pr_res% = DLL_CALL4("PrinterManager",1,ADR(phnd%),ADR(chnd%),0): ' init
  ' Dimensions sans les marges, en pixels:
  ' ==========
  ' ATTENTION: Les dimensions sont actualisées en fonction de l'option orientation !
  ' ==========
  Pr_lt% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),3,0,0): ' largeur totale
  Pr_ht% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),4,0,0): ' hauteur totale
  IF orient% = 0
      Pr_px% = Pr_ht%/297: ' pixels par mm, à l'impression en 600 dpi
  ELSE
      Pr_px% = Pr_lt%/297: ' idem (paysage)
  END_IF
  ' Résolution d'impression (pixels par pouce)
  Pr_rh% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),5,0,0): ' pix./pouce H
  Pr_rv% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),6,0,0): ' pix./pouce H
  ' Marges non imprimables: décalage en pixels à soustraire gauche et haut:
  Pr_mg% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),1,0,0): ' marge gauche
  Pr_mh% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),2,0,0): ' marge haut
  ' Dimensions utiles, en pixels:
  IF Pr_mg% = 0 OR Pr_mh%= 0: ' cas imprimante virtuelle (PDFCreator)
      Pr_mg% = 75: Pr_mh% = 75: ' forçage comme imprimante réelle
      Pr_lu% = Pr_lt% - 2*Pr_mg%: Pr_hu% = Pr_ht% - 2*Pr_mh%
  ELSE
      Pr_lu% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),7,0,0): ' largeur utile
      Pr_hu% = DLL_CALL6("PrinterFunction",8,ADR(phnd%),ADR(chnd%),8,0,0): ' hauteur utile
  END_IF
END_SUB

Résultat:
Kgf et Imprimante Aa169

Imprimante par défaut: PDFCreator en mode portrait
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Kgf et Imprimante Empty
MessageSujet: Re: Kgf et Imprimante   Kgf et Imprimante EmptyDim 23 Mai 2021 - 14:51

Bonjour Klaus, on s'est croisés (j'éditais ci-dessus...)
(imprimante HP Photosmart B109a)
Un petit gadget, le nom de l'imprimante par défaut, dans le clipboard, mais un peu long à l'exécution
(une quinzaine de secondes chez moi...)
Code:
SUB Printer_defaut()
  ' Nom de l'imprimante par défaut -> clipboard
  DIM_LOCAL a$,k%
  EXECUTE_WAIT "cmd.exe|/c Cscript %WINDIR%\System32\Printing_Admin_Scripts\fr-FR\Prnmngr.vbs -g |clip"
  a$ = CLIPBOARD_STRING_PASTE$
  k% = INSTR(a$,"est "): CLIPBOARD_STRING_COPY TRIM$(RIGHT_POS$(a$,k%+4))
END_SUB
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Kgf et Imprimante Empty
MessageSujet: Re: Kgf et Imprimante   Kgf et Imprimante EmptyDim 23 Mai 2021 - 15:54

Salut tout le monde.
@JL35
Et pourquoi pas une fonction qui retourne le nom de l’imprimante par défaut ?

Code:
print Printer_defaut$()
end
rem ============================================================================
FNC Printer_defaut$()
  DIM_LOCAL a$,k%
  EXECUTE_WAIT "cmd.exe|/c Cscript %WINDIR%\System32\Printing_Admin_Scripts\fr-FR\Prnmngr.vbs -g |clip"
  a$ = CLIPBOARD_STRING_PASTE$
  k% = INSTR(a$,"L'imprimante ")
  a$ = TRIM$(RIGHT_POS$(a$,k%))
  result a$
END_FNC

Chez moi, le résultat est presque instantané

Kgf et Imprimante 198
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Kgf et Imprimante Empty
MessageSujet: Re: Kgf et Imprimante   Kgf et Imprimante EmptyDim 23 Mai 2021 - 16:23

Tu as bougrement raison papydall, c'est bien mieux avec une Function (sans passer par le clipboard !)
bizarrement c'est bien plus rapide...
Euh... après plusieurs essais c'est souvent aussi long...
Je n'ai pas encore le réflexe des Functions à la place des Subs, mais c'est évidemment mieux dans ce cas.
(oui mais... j'ai une bibliothèque de subs,bien garnie, il faut que j'en crée une de fonctions...°
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Kgf et Imprimante Empty
MessageSujet: Re: Kgf et Imprimante   Kgf et Imprimante EmptyDim 23 Mai 2021 - 17:53

Ben... il y a aussi KGF.dll:
Code:
res% = DLL_call1("GetPrinterNames",handle(obj%))
Cette fonction retourne la liste des noms des imprimantes installées dans un mémo, un combo ou un list (passer le handle de l'objet en paramètre) et retourne comme résultat numérique le numéro de l'imprimante par défaut actuelle (1, 2, ...), donc le numéro de la ligne correspondante dans l'objet. La fonction retourne 0 si aucune imprimante par défaut n'est installée.

Voir l'aide en ligne ici:
http://klauspanoramic.infinityfreeapp.com/GetPrinterNames.html
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Kgf et Imprimante Empty
MessageSujet: re   Kgf et Imprimante EmptyDim 23 Mai 2021 - 18:15

La sub est sympa mais je n'ai pas besoin de tout çà.
Et cette sub provoque une impression vierge.
Quand je prends simplement les deux dont j'ai besoin, pas de résultat.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Kgf et Imprimante Empty
MessageSujet: Re: Kgf et Imprimante   Kgf et Imprimante EmptyDim 23 Mai 2021 - 18:30

Sache, Yannick, que pour trouver les informations sur les dimensions et autres caratéristiques physiques ne sont disponibles que si une imprimante est ouverte (connectée à KGF.dll). Et donc, une page cide est automatiquement mise à disposition. Si tu n'imprimes rien, la page blanche s'imprime alors telle qu'elle est.

Mais à quo bon voiloir connaître les informations sur les dimensions et les résolutions su l'on ne veut pas imprimer ? Ca n'a pas de sens. La suite "normale" des opérations est:
1. choisir l'imprimante
2. choisir l'orientation (portrait ou paysage, portrait étant le défaut). Impérativement à ce moment.
3. connecter l'imprimante
4. demander les détails physiques (dimensions, résolution, ...) et les mémoriser - ces informations ne changeront pas durant la session d'impression.
5. remplir la première page
6. tant qu'il y a d'autres pages à imprimer: éjecter la page en cours et imprimer la page suivante
7. fermer l'imprimante

Si tu dis:
Citation :
Quand je prends simplement les deux dont j'ai besoin, pas de résultat.
cela montre que tu n'as pas connecté l'imprimante. La preuve: dans ce cas, il n'y a pas de page blanche...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Kgf et Imprimante Empty
MessageSujet: Re: Kgf et Imprimante   Kgf et Imprimante EmptyDim 23 Mai 2021 - 20:16

J'adopte tout de suite la fonction qui donne la liste des imprimantes installées et le nom
de l'imprimante par défaut, super, et rapide.
Dans mes subs ci-dessus il manque le DLL_OFF à la fin.
Effectivement il se crée une impression 'blanche', je dois avoir quelque part un truc pour vider cette file d'attente inutile... (si l'imprimante est éteinte).
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Kgf et Imprimante Empty
MessageSujet: re   Kgf et Imprimante EmptyDim 23 Mai 2021 - 21:32

Mon but est d'avoir un picture de taille convenable pour l'impression

Si je fais un dessin sur un picture de 200x200 avec une imprimante en 360dpi comme la mienne 
ou 600dpi comme les votres, je ne vous dis pas la taille ridicule une fois imprimé.
Récupéré la résolution me permet de calculer une taille du picture correct pour une impression
disons...lisible.
Mais si c'est comme cela que ca fonction, je prends comme çà.
Je vais noté le 'protocole' (c'est un mot à la mode en ce moment) pour mes trous de mémoire.
Laughing
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Kgf et Imprimante Empty
MessageSujet: Re: Kgf et Imprimante   Kgf et Imprimante EmptyDim 23 Mai 2021 - 21:41

360 dpi ça te fait une image imprimée maxi de 2976 x 4209 pixels sur une page A4 si je compte bien...
Revenir en haut Aller en bas
Contenu sponsorisé





Kgf et Imprimante Empty
MessageSujet: Re: Kgf et Imprimante   Kgf et Imprimante Empty

Revenir en haut Aller en bas
 
Kgf et Imprimante
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Gestion de l'imprimante
» projet d'imprimante 3D
» File d'attente imprimante
» Calcul résolution ecran/imprimante

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: