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

API, COM et SDKs Delphi Discussion :

Comment capturer une page TWebBrowser en mode paysage ?


Sujet :

API, COM et SDKs Delphi

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Informaticien retraité
    Inscrit en
    Mars 2010
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 369
    Billets dans le blog
    1
    Par défaut Comment capturer une page TWebBrowser en mode paysage ?
    Je réalise une vaste DLL de service en Delphi 6 Personal Edition, pour un usage par un autre langage (un clône de Basic, en fait).

    Dans cette DLL, j'ai une série de fonctions gérant un WebBrowser créé dynamiquement. Et je veux y ajouter une fonction de capture, non pas dela partie visible à l'écran, mais de la page web entière, même ce qui est hors champs. J'ai pas map cheché sur internet, et j'ai trouvé comment faire. Je capte la totalité du canvas et le dépose dans une TBitmap crée dynamiquement cet effet. Ensuite, en fonction de la sortie choisie, je l'envoie sur l'imprimante par défaut du système, sur une imprimante choisie dans la liste des imprimantes du système ou dans le presse-papier. Et dans ce dernier cas, je l'envoie également dans un TPicture pour vérification.

    Cela marche parfaitement pour des pages en mode paysage (hauteur plus grande que largeur). En tout cas, pour la plupart d'entre elles. Certaines résistent. Et cela ne marche pas pour des pages en mode paysage (largeur plus grande que hauteur). Là, l'adaptation à taille du canvas de sortie ne se fait pas, tout simplement, et je ne comprends pas pourquoi.

    J'ai fait un petit projet de démo dont je poste le zip en pièce jointe. Le fichier EXE est joint et il fonctionne pour mettre en évidence le problème. Il montre deux forms:
    la form principale a une combo avec la liste des imprimantes installées, et l'imprimante par défaut est sélectionnée. Une autre combo donen deux URLs, dont la première est sélectionnée: une page en mode portait pour lequel le programme fonctionne et montre ce qui devrait se passer. Un bouton "Charger URL" charge cette RL dans le TWebBrowser de la form secondaire. Une checkbox pour afficher ou non les dimensions des canvas et bitmaps au cours du processus. Puis 3 boutons d'impression en fonction des 3 modes d'impression prévus dans mon code. La partie "impression" fonctionne bien dans tous les cas.

    Voici une capture d'écran avec impression dans le presse-papier avec l'URL en mode portrait:
    Nom : aa1.png
Affichages : 111
Taille : 119,3 Ko

    Certes, je sais: il y a un problème de déformation car je n'ai pas encore veillé à la proportionnalité des dimensions lors du changement de taille. Cela viendra, mais ce n'est pas l'objet de ma demande. Il est prévu de passer en édition multi-page si l'image ne tient pas dans la page sans déformations, ce qui est assez facile à faire en prenant pour chaque page la partie concernée du canvas de la bitmap récupérer. L'affichage dans le PICTURE est secondaire et ne sert qu'à vérifier qu'on a bien récupéré le canvas total de la page contenue dans le WebBrowser. L'important, c'est que l'image complète soit dans le presse-papier.

    La seconde capture montre le problème, à l'aide de la seoconde URL dans la combo URL:
    Nom : aa2.png
Affichages : 100
Taille : 55,0 Ko
    Subitement, il n'y a plus de changement de dimension de l'image. Pourquoi ?

    Le projet complet est en pièce jointe. Merci d'avance pour votre aide.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 04/11/2011, 08h34
  2. Comment forcer l'ouverture d'une page html en mode "AGRANDI" ?
    Par theos37 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/10/2010, 16h36
  3. Comment modifier une page affichée dans un TWebBrowser ?
    Par dreamincoco dans le forum Composants VCL
    Réponses: 7
    Dernier message: 24/03/2005, 14h07
  4. ouvrir une page Web en mode texte
    Par Halleck dans le forum Windows
    Réponses: 7
    Dernier message: 03/03/2004, 15h08
  5. [VB.Net] Comment generer une page html dynamiquement ?
    Par Anonymous dans le forum ASP.NET
    Réponses: 3
    Dernier message: 13/03/2003, 10h22

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