Icône de la ressource

VBA - Récuperer le texte d'un fichier PDF avec un navigateur Internet V4

  • Initiateur de la discussion Initiateur de la discussion Dudu2
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

je viens de la ressortir et chez moi c'est pareil edge et W 10
tu n'a pas chrome ou FF?
je viens de faire des tests ca ne marche plus du tout sur EDGE c'est même impossible car même a la main quand
je clique dans la fenêtre et manuellement fait un ctrl+a ça ne sélectionne pas
donc conclusion EDGE c'est mort
uiautomation client peut être
 
donc conclusion EDGE c'est mort
uiautomation client peut être
Effectivement avec UiAutomation on voit les bouts de texte contenus dans le PDF
UIA_PDF.png


Maintenant il faut voir comment on peut récupérer cela. Par exemple en bouclant sur tous les controles groupes qui contiennent Page, Lire tous les controles fils texte.
 
Dernière édition:
ou alors prendre le parent
si l'aapp pdf chez toi n'est pas edge tu peux essayer ceci comme ce vite fait je ne garanti rien
VB:
Declare PtrSafe Function SendMessageA Lib "user32" (ByVal hwnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, lParam As Any) As LongPtr
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Private Declare PtrSafe Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As LongPtr, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare PtrSafe Function GetWindow Lib "user32" (ByVal hwnd As LongPtr, ByVal wCmd As Long) As Long
Declare PtrSafe Function ShowWindow Lib "user32" (ByVal hwnd As LongPtr, ByVal nCmdShow As Long) As Long
Const WM_CLOSE = &H10
Sub testpdf2()
    Dim x As LongPtr, t$
    Set clip = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    clip.SetText "": clip.PutInClipboard
    t = ""
    With CreateObject("wscript.shell")
        .Run "C:\Users\patricktoulon\Desktop\FEM_K1801.pdf", vbMaximizedFocus
        Do While i < 1000: DoEvents: i = i + 1: Loop
        x = FindWindoWByPartTitle("*FEM_K1801.pdf")
        DoEvents
        ShowWindow x, 3
        Do While Len(t) < 1000
            .SendKeys "^a"
            .SendKeys "^c"
            DoEvents
            clip.GetFromClipboard
            t = clip.GetText(1)
            DoEvents
        Loop

    End With
    If x <> 0 Then SendMessageA x, WM_CLOSE, 0, 0
    [a1].Select
    ActiveSheet.Paste
    MsgBox x
End Sub

Function FindWindoWByPartTitle(Optional partTittle As String, Optional PartApp As String)
    Dim sStr As String, hwnd As LongPtr
    sStr = Space$(150)
    hwnd = FindWindow(vbNullString, vbNullString)
    Do While hwnd <> 0
        GetWindowText hwnd, sStr, 300
        If sStr Like "*" & partTittle & "*" Then
            FindWindoWByPartTitle = hwnd
            Exit Function
        End If
        hwnd = GetWindow(hwnd, 2)
    Loop
End Function
 
Hello,
bon je suis arrivé à utiliser UIAutomation pour extraire le texte d'un PDF avec Edge . Plus besoin d' API windows (sauf le Sleep) et pas de SendKeys.
Le Principe :
1 - On regarde tout d'abord si il n'y a pas un navigateur de type chromium (edge, chrome, brave) en activité. Il faut fermer tous les navigateurs avant de commencer sinon il y a risque de confusion.
2 - On lance le navigateur MsEdge avec en paramètre le fichier PDF à lire. Avec UIAutomation on attend que la fenêtre du navigateur soit disponible et on récupère l'objet Fenêtre de MsEdge.
3 - Avec UIAutomation on attend que l'objet Document contenant les pages du PDF soit disponible puis on attend que toutes les pages soient disponibles.
4 - On récupère le texte de l'objet Document en une seule fois.
5 - On ferme le navigateur en cliquant sur la croix avec UIAutomation.

UIA_Edge_PDF.gif


Ami calmant, J.P
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour