Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 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 | | Calendrier |
|
|
| Imprimer le contenu d'une page avec: WBcreat. | |
| | Auteur | Message |
---|
Oscaribout
Nombre de messages : 471 Date d'inscription : 29/12/2016
| Sujet: Imprimer le contenu d'une page avec: WBcreat. Mer 25 Nov 2020 - 16:16 | |
| Comment faire pour imprimer une page créée sur une Form avec WBCreate. Je vois pour dessiner des cercles, rectangle, mais une page créé avec ta fonction?
Ne te précipites pas, pour l'instant je me sers de mon navigateur, et maintenant je ne reviens pas avant ce soir.
Merci | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Imprimer le contenu d'une page avec: WBcreat. Mer 25 Nov 2020 - 16:40 | |
| WBCreate sert à créer un WebBRowser. donc, tu veux imprimer l'image d'une page WebBrowsern et ce sans un fichier PDF ? Une solution consiste à créer un objet Panoramic IMAGE. Puis, tu utilises la nouvelle fonction CopyObjectByHandle (documentation dans la section "Gestion des images") pour copier l'image de la page web dans le presse_papier, en spécifiant le handle du WebBrowser. Puisn tu utilises la commande Panoramic ClipboardPaste pour copier le presse-papier dans l'objet IMAGE. Puis, tu utilises la commande Panoramic Save_To_File pour enregistrer l'image dans un fichier. Et enfin, tu as maintenant deux options: 1. tu utilises la fonction PrintFormattedPDF avec une seule commande BACKGROUND pour ce nom de fichier ce ui te remplira la page DIN A4 avec l'image de la page Web 2. tu utilises la fonction PrintFormattedPDF avec autant de commandes que tu veux, mais en imprimant le fichier enregistré par la commande IMAGE de la fonction PrintFormattedPDF. Là, tu peux choisir la position et des dimensions de l'image résultante dans la page PDF. Tu peux ainsi poser du texte autour, etc. Les option (1) et (2) demandent le nom du fichier. Soit tu le mets directement dans la commande, comme - Code:
-
Background,mon image de fond.jpg ou - Code:
-
Image,835,1200,400,300,MonImage.jpg (position en [835,1200] et dimensions [400,300]) soit tu places ce nom de fichier dans une chaîne de caractères dont tu passes l'adresse comme deuxième paramètre à PrintFormattedPDF, et tu remplaces le nom de fichier dans les exemples ci-dessus par #1. Le premier paramètre est bien sûr le handle d'un MEMO (invisible) contenant la liste des commandes PrintFormattedPDF. Et voilà - le tour est joué. | |
| | | Oscaribout
Nombre de messages : 471 Date d'inscription : 29/12/2016
| Sujet: Re: Imprimer le contenu d'une page avec: WBcreat. Mer 25 Nov 2020 - 19:03 | |
| J'ai eu le temps de venir 10 mn
Je ne trouve pas la fonction CopyObjectByHandle dans KGF. J'ai la version 938 du 22 nov. | |
| | | Oscaribout
Nombre de messages : 471 Date d'inscription : 29/12/2016
| Sujet: Re: Imprimer le contenu d'une page avec: WBcreat. Mer 25 Nov 2020 - 19:27 | |
| Désolé Klaus, j'avais bien la bonne dll mais j'ai ouvert un ancien fichier kgf.chm. Il faudra que je mettre de l'ordre la dedans. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Imprimer le contenu d'une page avec: WBcreat. Mer 25 Nov 2020 - 23:29 | |
| Il suffit juste de recharger KGF.chm à partir de la signature de mon post, ou d'utiliser l'aide en ligne également accessible via ma signature. | |
| | | Oscaribout
Nombre de messages : 471 Date d'inscription : 29/12/2016
| Sujet: Re: Imprimer le contenu d'une page avec: WBcreat. Jeu 26 Nov 2020 - 0:46 | |
| Merci, j'avais compris. J'avais choisi un mauvais dossier, car avec le temps et les différentes rétablissement de windows, j'ai plusieurs kgf. Cela dit j'essaye de charger un document html dans WB_... créé dans une Form, pour faire des essais, et je n'y arrive pas. Tout cela pour comprendre pourquoi je ne copie rien. L'image me retourne un fichier vide. Dans mon programme après avoir rempli le browser WB, J'ai bien la copie d'une image qui correspond à ma demande, mais avec la fonction: CopyObjectByHandlej'ai - Code:
-
form 300:full_space 300 : hint 300,300 x%=width(300)-30:y%=height(300)-90 hnd% = handle(300) res% = dll_call1("WBCreate",hnd%) : ' créer un objet WebBrowser dans la form 0 res% = dll_call4("WBLocate",0,0,x%,y%) : hide 300 image 301 : ' stretch_on 301image ou picture donne la même erreur memo 302:bar_both 302:hide 302 et - Code:
-
print_html: filter 55,"Lecture courrier html|*.html" htm$=file_name$(55) : clear 302 if htm$<>"_" nom$=string$(255," ") res% = DLL_call2("SelectWindowsPrinter",adr(nom$),len(nom$)) Imag% = handle(301) res% = dll_call1("CopyObjectByHandle",Imag%) : message "-1 = erreur res%="+str$(res%) :' IMAGE ou PICTURE erreur idem Je reçois le message [Content] (29) Expression arithmétique incorrecte : Fonction non applicable pour ce type d'OBJET. Line : 534 Que je mette le handle de WB celui d'un picture ou d'un objet image, j'ai toujours la même erreur Edit: la ligne 534 est celle-ci res% = dll_call1("CopyObjectByHandle",Imag%) | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Imprimer le contenu d'une page avec: WBcreat. Jeu 26 Nov 2020 - 1:13 | |
| Oui, c'est normal... il faut faire: - Code:
-
res% = dll_call1("CopyObjectByHandle",handle(300)) puisque tu veux copier l'image de la form 300 dans le presse-papier. Ensuite, tu peux dérouler la suite normalement: clipboard_paste 301 file_save 301,... etc. | |
| | | Oscaribout
Nombre de messages : 471 Date d'inscription : 29/12/2016
| Sujet: Re: Imprimer le contenu d'une page avec: WBcreat. Jeu 26 Nov 2020 - 1:58 | |
| Oui ça ne bloque plus et res% = 0 donc plus d'erreur. Seulement la suite: - Code:
-
clipboard_paste 301 file_save 301,dossier$+"Picture.bmp" :' =====---->>>> Le fichier: 0 octet ' res% = DLL_call4("PrinterManager",f%,adr(phnd%),adr(hnd%),opt%) item_add 302,"Background,"+dossier$+"Picture.bmp": Pdf$ = dossier$+"imprime.pdf" res% = dll_call5("PrintFormattedPDF",handle(302),adr(TxtPars$),adr(Intpars%),adr(FloatPars),adr(PDF$)) 301 est : IMAGE 301 , MEMO 302 Je devrais donc avoir une copie dans image, mais le fichier est vide. Et la suite? Est-ce que en dehors des déclarations de variables, est-ce qu'il faut mettre quelque chose dans celles-ci? Il n'y a que l'image qui m'intéresse. Merci pour m'avoir répondu. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Imprimer le contenu d'une page avec: WBcreat. Jeu 26 Nov 2020 - 2:26 | |
| Essaie de déclarer l'objet 301 comme PICTURE au lieu de IMAGE, et tu fais STRETCH_ON 301. Place ce picture dans ta form 0 et garde-le visible. L'image devrait y apparaître. Pour vérifier, fais - Code:
-
res% = dll_call1("CopyObjectByHandle",0) Tu devrais obtenir une copie de l'écran complet, et la suite devrait marcher dans ce cas. Ah, je crois que j'ai compris. Tu caches le WebBrowser, et la page HTML n'est donc pas visible dans la form 300. Et donc, l'image captée et vide, bien sûr. Essaie de ne las cacher le WebBrowser, on verra le résultat. Ensuite, il y a deux options: 1. tu peux cacher la form 300 au lieu du WebBrowser 2. au lieu de passer handle(300), tu fais - Code:
-
hnd% = dll_call1("WBFunction",8) : ' retourne le handle du WebBrowser res% = dll_call1("CopyObjectByHandle",hnd%) : ' prendre directementle WebBrowser | |
| | | Oscaribout
Nombre de messages : 471 Date d'inscription : 29/12/2016
| Sujet: Re: Imprimer le contenu d'une page avec: WBcreat. Jeu 26 Nov 2020 - 3:09 | |
| Merci, oui ça avance. Le problème est que je n'ai qu'une portion d'image. J'avais mid l'échelle du brower sur celle de la fenêtre, Donc je vois qu'il va falloir que je le mettre selon A4. Mais ensuite j'ai mis juste un message avant: - Code:
-
res% = dll_call5("PrintFormattedPDF",handle(302),adr(TxtPars$),adr(Intpars%),adr(FloatPars),adr(PDF$)) car sinon il y a erreur sans éclair. Donc je bloque panoramic à ce niveau. Je ne sais pas (en dehors de déclarer les variables TxtPars$,IntPar$%,FloatPars, si il faut remplir quelque chose pour une image. Je suis désolé mais j’aurais du arrêter depuis un moment, je dois me lever de bonne heure. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Imprimer le contenu d'une page avec: WBcreat. Jeu 26 Nov 2020 - 8:28 | |
| Pour la taille, il y a une solution, par la commande image, dont la syntaxe est: - Code:
-
Image,x,y,w,h,nom Avec cette commande, tu places l'image où tu veux, et tu peux donner les dimensions en largeur ey hauteur. C'est peut-être la solution pour ton problème d'image partielle. L'impression se fait en appliuant le STRETCH de façon automatique, de sorte à avoir toujours l'mage complète. Mais je pense le l'mage partielle est plutôt provoquée par le code Panoramic. Tu utilises maintenant un PICTURE pour l'objet 301, non ? Alors, il faut surtout faire - Code:
-
stretch_on 301 avant le clipboard_paste. Ainsi, tu auras l'image compléte. Et su tu veux éviter les déformations, il faut, au préalable, donner les mêmes dimensions à l'objet 301 que celles de la fenêtre 300. Ou du moins, donner des dimensions dont le rapport hauteur sur largeur soit le même. Ainsi, STRECH_ON ne déformera pas. | |
| | | Oscaribout
Nombre de messages : 471 Date d'inscription : 29/12/2016
| Sujet: Re: Imprimer le contenu d'une page avec: WBcreat. Ven 27 Nov 2020 - 0:09 | |
| Bonsoir Klaus, J'ai préféré faire des testes avant de répondre. Finalement, ce que je constate, est quoi que je fasse avec picture, image stretch_on ou pas et dimensionner picture de différente façon (picture pour se qui se passe), et bien je ne copie que la hauteur de l'écran du browser, le reste en bas n'est pas présent.
Je me demande s'il n'y aurait pas une possibilité de faire une rotation du WB_ pour voir le texte couché dans une page.
Ce qui serait bien est d'avoir une commande qui imprime directement en pdf un browser. Mais ça c'est du travail que je ne veux pas t'imposer. Une question: comment savoir la hauteur qui est écrite dans le browser? car en sachant cela (évidemment il faut tester) on pourrait peut-être dimensionner le picture en rapport à la hauteur du texte Non vu que picture c'est pour remplacer image. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Imprimer le contenu d'une page avec: WBcreat. Ven 27 Nov 2020 - 0:37 | |
| Je vais prendre un peu de temps pour tester cela, et je reviendrai vers toi lorsque j'aurai du nouveau. | |
| | | Oscaribout
Nombre de messages : 471 Date d'inscription : 29/12/2016
| Sujet: Re: Imprimer le contenu d'une page avec: WBcreat. Ven 27 Nov 2020 - 16:04 | |
| Bonjour Klaus. Je viens de tester ta réponse faite ICIEt bien le résultat reste entier. Seule la partie de la fenêtre est copiée. Voici après avoir dé-zoomée ce que j'obtiens: Le reste c'est du blanc. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Imprimer le contenu d'une page avec: WBcreat. Ven 27 Nov 2020 - 16:08 | |
| Ben... oui, c'est ce que je disais. Pour l'affichage d'une fenêtre, Windows prépare une bitmat contrnant exclusivement la partie visible de cette fenêtre. Même si le contenu "logique" est plus vaste, ce n'est pas affiché, et donc la bitmap n'est pas préparée. Et ma fonction capte la bitmap de l'objet dont on passe le handle.
Actuellement, je ne vois pas du tout comment prendre l'image de la "page entière" alors qu'elle n'est pas affichée. | |
| | | Contenu sponsorisé
| Sujet: Re: Imprimer le contenu d'une page avec: WBcreat. | |
| |
| | | | Imprimer le contenu d'une page avec: WBcreat. | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |