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.
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.
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
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.
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
Bonjour,
j'ai pensé à faire une capture d'ecran sur la page
mais je récupère l'image du bureau avant que ms-word récupère le focus
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
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
Mes tutoriels
Avant de poster :
- F1
- FAQ
- Tutoriels
- Guide du développeur Delphi devant un problème
Avec un FindWindow, tu peux récupérer la fenêtre du Word
une version très simplifié
En réalité, faut faire un truc genre Repeat Sleep(1) until not FindWindow;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Sleep(100); WordCaption := w1.Caption; SetForegroundWindow(FindWindow(nil, PChar(WordCaption)));
Ainsi le Word sera actif puis
Tu peux pousser le vice à ne récupérer que le handle RichEdit60W (le numéro change selon la version de Word)
Code : Sélectionner tout - Visualiser dans une fenêtre à part deviceContext := GetDC(FindWindow(nil, PChar(WordCaption)));
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
Surement via OLE WebPagePreview doit fournir ce qu'il faut mais pour cela faut lire la documentation
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager