Gambas France BETA


Pas de compte ? Incription

Imprimer sous GB3 [RESOLU]

Ce sujet est résolu.

123
AuteurMessages
LanoueC#16 Posté le 6/7/2010 à 16:56:00
Bonjour Sphéris

A titre d'information pour ma culture générale, pourquoi n'essaies tu pas en GB2


Eh bien c'est simple !
j'ai un prog qui tourne justement sous GB2 pour lequel mes impressions passent par un WebBrowser suivant la méthode de Taoteblues

MAIS cette méthode ne fonctionne absolument pas en GB3
Aussi j'essaie de voir comment imprimer en GB3 pour faire en GB2 une méthode qui fonctionnera sous GB3 sans rien avoir à trop changer : ce qui n'est pas le cas a ce jour

Voilà Sphéris
Bonne journée
LanoueC
LanoueC#17 Posté le 6/7/2010 à 17:16:00
Salut Gambix

Oui un tuto me semble souhaitable

Pour la résolution avec monratio comme tu dis, adapté au dernier code que j'ai posté : rien ne change j'ai une page vierge qui sort à l'imprimante

De plus :
Printer1.OutputFile = chemin & "/FeuilleAimprimer.pdf"
Printer1.Configure
Printer1.Print

cela ouvre bien le panneau de config de l'imprimante, mais l'impression (la sortie de page puisque il n'y a rien d'imprimé) ne débute que quand je quitte le prog !!!

En fait c'est peut être là que cela pêche, l'évènement printer1_draw ne se lance pas peut être?

je suis tétue mais j'ai envie de comprendre pourquoi c'est si compliqué d'imprimer

LanoueC
gambix#18 Posté le 8/7/2010 à 10:39:00
Faire simple !Dit moi Lanouec ... je vien de relire ton message la ... mais pourquoi tu tien a passer par le navigateur ? (webbroswer)
Qu'est que tu cherche a imprimer exactement ?
Moins de texte dans une signature c'est agrandir son espace.
LanoueC#19 Posté le 8/7/2010 à 14:50:00
Bonjour Gambix

Je veux imprimer des pages HTML simplement

Mais en GB3, ce n'est pas le WebBrowser qui pose problème puisque j'ai fait un ScreenShot de la page que je veux imprimer!

Merci d'avance Gambix de ton travail qui je pense est surchargé

Le tuto impression, tu le met dans l'aide? il sera visible par le web avec l'aide de GB3?

A plus
LanoueC
gambix#20 Posté le 8/7/2010 à 15:11:00
Faire simple !non dans les exemples , ... bon mais la je file , je suis bénévole sur un beau festival autour du cognac ... 4 soirée, 2 groupe par soirée (dont sanseverino)


http://www.lafeteducognac.fr/programmation.html

je vois ça après ;)
Moins de texte dans une signature c'est agrandir son espace.
LanoueC#21 Posté le 22/7/2010 à 19:44:00
Bon ben je pense avoir résolu

il fallait pas écrire dans l'évènement printer1_draw paint.begin et paint.end

bonne soirée a tous
manu#22 Posté le 22/7/2010 à 19:57:00
Avec Gambas ca roule !Lanouec,

C'est un peu plus compliqué que ça... Je fais un exemple avec différent types d'impression. Je posterais ça sur gambas-forge. Mais effectivement il n'est pas nécessaire de mettre Paint.begin et Paint.end dans l'evenement Draw de Printer (comme me l'a expliqué Benoit... ;) )
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
loki#23 Posté le 23/7/2010 à 17:56:00
salut LanoueC,

Tu peut expliquer comment tu as fait pour imprimer, j'ai voulu tester l'impression d'une FMain avec un textaera et un label mais rien a faire je n'y arrive pas :oops:

a+
loki
Dell Vostro 3750
Ubuntu 13.04 - Gambas 3.4.1
manu#24 Posté le 24/7/2010 à 11:16:00
Avec Gambas ca roule !Un peu de patience loki.... je travail sur un exemple.

Le principe générale est relativement simple.

Il faut instancier un contrôle printer et dessiner dedans avec la classe Paint de la même facon que tu le ferais dans une DrawArea par exemple....

Dans la v2, c'etait pareil sauf qu'on utilisais la classe Draw. Tu peux déjà regarder les exemples en gambas2 et essayer de traduire ca pour la v3. J'ai aussi commencé à modifier l'exemple Printing qui est pour l'instant inutilisable en v3.
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
LanoueC#25 Posté le 24/7/2010 à 17:53:00
Bonjour loki

voilà le code que j'ai utilisé pour imprimer

1
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Public Sub Button1Imprimer_Click()ProCapture()'chemin du fichier pdf généré si besoinPrinter2.OutputFile = chemin & "/FeuilleAimprimer.pdf" Printer2.Orientation = Printer.PortraitPrinter2.Paper = Printer.A4Printer2.Count = 1 If Printer2.Configure() Then ReturnPrinter2.PrintEnd'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Public Sub Printer2_Draw() Dim X, Y, W, H As FloatDim hBrush As PaintBrush X = 1 Y = 1 W = Desktop.W H = Desktop.H ImageAimprimer = ImageAimprimer.Stretch(W * 5, H * 5) hBrush = Paint.Image(ImageAimprimer) Paint.Brush = hBrush Paint.Rectangle(X, Y, W * 5, H * 5) Paint.FillEnd'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Public Procedure ProCapture() ImageScreenShot = WebView1.Screenshot() ImageAimprimer = ImageScreenS.Image ImageAimprimer.Save(chemin & "/ScreenShot.png") ImageAimprimer = Image.Load(chemin & "/ScreenShot.png") End'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Ce n'est pas au point mais cela imprime!
Le problème c'est que je n'arrive pas à mettre au format pleine page ma capture d'écran ImageAimpimer
le multiplicateur par 5 que j'ai utilisé est du tatouaillage pifométrique : rien de sérieux

Voilà en espérant que cela t'aidera

LanoueC
Bon weekend ou vacances pour ceux qui ont cette chance!
Prokopy#26 Posté le 24/7/2010 à 19:43:00
Kinder PinguiPour ton histoire d'étirement de la page, j'ai une idée :

D'après la doc de Gambas, une page A4 a une taille de 8.26 × 11.69 pouces. Il te suffit d'utiliser la propriété Resolution de l'objet Printer qui te retourne la résolution en points par pouce.

Tu obtiens donc l'équation : Image.H / 11.69 = Printer.Resolution

Tu renverses l'équation, tu fais pareil avec la largeur et le tour est joué ! :D
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
manu#27 Posté le 24/7/2010 à 19:54:00
Avec Gambas ca roule !Hummm, sauf que l'image risque d'etre salement deformée non ???? :roll:
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
Prokopy#28 Posté le 25/7/2010 à 00:58:00
Kinder PinguiC'est vrai, sauf si tu donnes un bon coup de proportionnalité là-dedans :

1
PUBLIC FUNCTION RedimensionnerDansRectangle(H1 AS INTEGER, W1 AS INTEGER, H2 AS INTEGER, W2 AS INTEGER) AS Integer[] DIM nouvelleTaille AS Integer[] DIM ratio AS FLOAT IF W2 / W1 < H2 / H1 ratio = W2 / W1 nouvelleTaille = [CInt(H1 * ratio), W2] ELSE ratio = H2 / H1 nouvelleTaille = [H2, CInt(W1 * ratio)] ENDIF RETURN nouvelleTaille END


H1 et W1 étant les anciennes dimensions de ton image, H2 et W2 celles de ta page, et nouvelleTaille un tableau qui a respectivement pour valeurs les nouvelles hauteur et largeur de ton image redimensionnée comme il faut. Et toc. 8)

Sinon excusez-moi tout le monde, mais j'ai lu un peu vite et je viens seulement de me rendre compte que tu voulais imprimer une page Web, LanoueC. J'ai vu que tu essayais WebView1.Screenshot() mais ce n'est pas bon !!!
3 bonnes raisons à cela :

  • Quand tu fais ça, c'est comme si tu prenais ton contrôle en photo, et non ta page Web. Donc la page a des chances d'être coupée, et en plus on va voir les barres de défilement. Moche moche …
  • La plupart du temps, les webmasters (consciencieux) créent un style pour leur site spécialement pour l'impression, où ils virent les fonds et tous les trucs inutiles (histoire de pas bouffer trop d'encre, sinon => :affraid: ). Or là c'est le style d'affichage à l'écran qui est utilisé, donc bonjour les 40€ d'encre ! :P
  • Et puis tu t'embêtes pour rien ! :tongue:
te une fonction toute prête qui te permet d'imprimer ta page Web : c'est la méthode Print de WebFrame. Le webFrame en question est accessible via la propriété WebView.Frame. T'as juste a passer à la méthode ton Printer et t'es tranquille !

Petit exemple (avec un simple formulaire sur lequel il y a juste un WebView) :

1
PUBLIC SUB Form_Open()DIM Printer2 AS NEW PrinterPrinter2.OutputFile = Application.Path &/ "FeuilleAimprimer.pdf" Printer2.Orientation = Printer.PortraitPrinter2.Paper = Printer.A4Printer2.Count = 1 IF Printer2.Configure() THEN ReturnWebView1.Frame.Print(Printer2)END


J'ai essayé sur mon site perso en construction qui tourne en local, et ça marche très bien, j'ai un beau PDF ! :D

(Enfin presque, comme le site est en construction, j'ai pas eu le temps de faire le design d'impression et le rendu est très très moche, mais ça marche :lol!:
Ce sera à ajouter à mon to-do ça. :roll: )
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
manu#29 Posté le 25/7/2010 à 08:12:00
Avec Gambas ca roule !Super ca prokopy :lol:

Merci pour toutes ces infos, ca servira à plus d'un d'entre nous, c'est sure. :lol:
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
loki#30 Posté le 25/7/2010 à 13:15:00
Tout ça est très intéressant et l'exemple de Prokopy avec le webframe marche très bien et permet d'utiliser l'impression en version texte plutôt que d'imprimer une image comme LanoueC (si j'ai bien compris son code) ,bon je continue à faire des tests :D

Merci pour ces infos 8)
loki
Dell Vostro 3750
Ubuntu 13.04 - Gambas 3.4.1
123