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

Composants VCL Delphi Discussion :

Récupérer l'image de la première page d'un fichier Word


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut Récupérer l'image de la première page d'un fichier Word
    bonjour à tous,

    je voudrais recuperer des images d'une ou plusieurs pages d'un fichier word pour les identifier pour un accée à partir de delphi comme le fait youtube par exple.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut

    Nom : Capture.PNG
Affichages : 147
Taille : 29,8 Ko
    ou une recherche dans le forum Delphi puisque le sujet a déjà été abordé dans diverses discussions comme le prouve cette image.
    une "solution"

    AMHA il y a plusieurs solutions OLE ou peut-être des composants tiers (i.e Winsoft Office Component Suite) nécessitant qu'office soit installé,
    pour un "comme le fait youtube" j'imagine que webbrowser est la solution
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    Bonjour,

    C'est pas ça que je veut faire, je veux seulement récupérer l'image d'une des pages du fichier et le mettre dans un Timage.

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Alors peut-être que le composant TJamFilePreview de la suite ShellBrowser sera t-il correspondre à ce besoin ?
    Si ce n'est que la première page, il y a aussi les thumbnails stockés dans C:\Users\<utilisateur>\AppData\Local\Microsoft\Windows\Explorer, encore faudra t-il trouvé un moyen de les extraire des .db (ce ne sont pas des fichiers SQLite mais des Compound File Binary Format (CFBF), structure propre à Microsoft
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    Bonjour,

    j'ai pensé à faire une capture d'ecran sur la page
    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
     
    var
      bitmap: TBitmap;
      desktopHandle: THandle;
      deviceContext: HDC;
    begin
     
     w1 := CreateOleObject('word.Application');
             W1.WindowState:=wdWindowStateNormal;
    W1.Visible := True;
    W1.Activate;
     
      desktopHandle := GetDesktopWindow; // Récupération du handle du bureau
      deviceContext := GetDC(desktopHandle); // Récupération du contexte de périphérique du bureau
     
      bitmap := TBitmap.Create; // Création d'une image bitmap
        bitmap.width := screen.width; // Ajustement de la taille de l'image
        bitmap.height := screen.height; // pour qu'elle corresponde à celle du bureau
     
        BitBlt(bitmap.canvas.Handle, 0, 0, bitmap.width, bitmap.height,
          deviceContext, 0, 0, SRCCOPY); // Copie du bureau dans l'image bitmap
    mais je récupère l'image du bureau avant que ms-word récupère le focus

  6. #6
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 667
    Points : 5 235
    Points
    5 235
    Par défaut
    Si ton document Word est un DOCX, tu peux l'attaquer en le considérant comme une collection de fichiers XML (selon la norme Open XML).
    Si tu en as le courage, tu peux l'attaquer comme le fait Bruno Sonnino dans cet exemple qui montre simplement le principe
    https://blogs.msmvps.com/bsonnino/20...s-with-delphi/

    Pour le réaliser tu devras te pencher sur la documentation de Open XML;
    https://docs.microsoft.com/en-us/ope...1-3c63cea830a4
    ou encore
    http://officeopenxml.com/anatomyofOOXML.php
    Et en particulier ce qui concerne les objets Drawing et ImagePart

    Avec C#, il existe une librairie prête à l'emploi et gratuite.
    En Delphi, tu peux essayer du coté de Direct Office mais ce sera payant
    https://torry.net/pages.php?id=224

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Citation Envoyé par chekkal Voir le message
    mais je récupère l'image du bureau avant que ms-word récupère le focus
    Avec un FindWindow, tu peux récupérer la fenêtre du Word

    une version très simplifié

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sleep(100);
    WordCaption := w1.Caption;
    SetForegroundWindow(FindWindow(nil, PChar(WordCaption)));
    En réalité, faut faire un truc genre Repeat Sleep(1) until not FindWindow;

    Ainsi le Word sera actif puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    deviceContext := GetDC(FindWindow(nil, PChar(WordCaption)));
    Tu peux pousser le vice à ne récupérer que le handle RichEdit60W (le numéro change selon la version de Word)

    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    j'imagine que webbrowser est la solution
    Surement via OLE WebPagePreview doit fournir ce qu'il faut mais pour cela faut lire la documentation


    Citation Envoyé par SergioMaster Voir le message
    Alors peut-être que le composant TJamFilePreview de la suite ShellBrowser sera t-il correspondre à ce besoin ?
    A noter aussi le IPreviewHandler qui permet depuis le Shell View d'obtenir l'aperçu, c'est les API derrière l'Explorateur de Fichier qui fait cela nativement.
    Un démo Hosting Preview Handlers in Delphi VCL Applications
    Cela fait la même chose que le composant TJamFilePreview


    Merci
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Réponses: 5
    Dernier message: 21/04/2017, 16h18
  2. Récupérer des images à partir d'une page internet, fiche de produits
    Par IVIedia dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 28/11/2015, 12h29
  3. [PPT-2010] Comment remplacer des images sur une "première page" Powerpoint ?
    Par sustria dans le forum Powerpoint
    Réponses: 2
    Dernier message: 02/09/2013, 13h48
  4. Forcer une image à figurer en première page + masquer en-têtes et pieds de page
    Par scalande dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 9
    Dernier message: 04/03/2009, 18h57
  5. [HTML] Récupérer une "image" html d'une page JSP
    Par benjoo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 19/03/2008, 11h54

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