Icône de la ressource

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

Dudu2

XLDnaute Barbatruc
Dudu2 a soumis une nouvelle ressource:

VBA - Récuperer le texte d'un fichier PDF - VBA - Retrieve text from a PDF file

Le fichier à télécharger contient:
  1. Le Module_GetPDFText
  2. Le Module_Test qui donnent un exemple d'utilisation
Les principales caractéristiques:
  • La Fonction GetPDFText() retourne le texte d'un fichier PDF reçu en argument.
    Si un erreur se produit, la valeur de retour est un numéro d'erreur.

  • La fonction [COLOR=rgb(0, 168...[/LIST]
 

patricktoulon

XLDnaute Barbatruc
bonjour Dudu2
je viens encore de testé aujourd'hui
et j'ai encore quelques echecs
alors j'ai remarqué qu'en 2016 64 le test getactivewindow agissait quand la page est chargé et non dès que la fenêtre s'affiche
sur 2013 32 bit le test getactivewindow intervenait tres vite dès l'affichage de la fenêtre (chrome ou FF)document chargé ou pas

je reste persuadé pour que pour la compatibilité (64/32) seul le( clip plein)doit intervenir dans le process
d'ailleurs avec ma version je n'ai plus une seule erreur que ce soit sur chrome ou FF ou edge ou l'app par defaut si un reader est installé
 

Dudu2

XLDnaute Barbatruc
Bonjour @patrcktoulon,
Je suis quasi-sûr que dans tous le cas le GetActivewWindow revient avec un Handle bien avant que le document PDF soit ne serait-ce qu'accédé, que ce soit en 64 ou 32 bits. Ça paraît logique puisque pour accéder et charger le document PDF, il faut déjà que le programme soit là et donc sa fenêtre.

C'est pour ça qu'après le GetActiveWindow, j'ai placé un timer pour le temps, non pas d'un chargement complet, mais d'un début de chargement du document, principalement pour lancer le fameux Clic Souris de Chrome qui doit être fait lorsque le document est présent.
VB:
'Wait for the Browser Window to be displayed
Sleep Application.Max(1000, Int(RatioCPU * 1000))

J'attends de voir si j'ai d'autres retours d'erreurs. Et si ta version fonctionne mieux tu n'as qu'à la placer ici.
je reste persuadé pour que pour la compatibilité (64/32) seul le( clip plein)doit intervenir dans le process
Je ne comprends pas ce que tu as voulu dire. "seul le( clip plein)" ?
 

patricktoulon

XLDnaute Barbatruc
Je ne comprends pas ce que tu as voulu dire. "seul le( clip plein)" ?
je veux dire par là que je fait fi du getactivewindow de la gestion d'attente du chargement etc

je laisse juste une attente minimum (a fin que la fenêtre s'ouvre) et je mitraille avec les touches tant que le clipboard ne contient pas plus de 10 caractères
et c'est tout

alors oui le test sur les fenêtres peu accélérer les choses quand ça se passe bien
mais cela peut jouer aussi en fonction de l'utilisation du pc à l'instanté ou tu lance la fonction
et aussi du navigateur
mais tout ca je te l'ai déjà dit me semble t il
on le constate bien sur firefox d'ailleurs qui met plus de temps a s'ouvrir
et inversement quand je tombe sur le case else (donc l'app par defaut pour ceux qui en ont une ) c'est plus rapide
mais dans n'importe quel cas la méthode do/loop getactivewindow est casiment inutile

et c'est pas quelque sendkeys en plus qui vont manger de la memoire
dans ma derniere version pour le gros fichier pdf que l'on a pris en exemple (62 mega)
je fait jamais plus de 3 essais je suis entre 8.54 et 10.75 secondes
pour le petit pdf en effet je met entre 4/5 secondes c'est donc plus lent sur les petits

les temps d'attente
pour la fenêtre 3 pour les gros pdfs ou 2 pour les petits pdfs
entre chaque essais de sendkeys 2 ou 1
sachant que j'ai mis l'augmention a partir de 40 mega (4000000000)
 

Dudu2

XLDnaute Barbatruc
je laisse juste une attente minimum (a fin que la fenêtre s'ouvre)
Tu laisses combien ?
Moi aussi je laisse une attente minimale de 1 seconde, plus si la CPU est peu puissante.
Et ce n'est pas le GetActiveWindow qui est en cause puisque cette attente je la fais après.
 

patricktoulon

XLDnaute Barbatruc
d'autre part et là c'est important!!!
les sleep avec api retardent la chose par rapport a un do/loop avec doevents
pourquoi
et bien par ce sleep gèle le procc
d'ailleurs quand je remplace mes deux do/loop d'attente par des sleep de même durée ca part en eau de boudin
 

Magnio

XLDnaute Nouveau
Bonjour,
Je dois être un peu idiot, mais je n'arrive pas à me servir du fichier pour faire un essai. Ne serait-il pas possible d'ajouter une fonction pour aller "chercher" le pdf à lire? (Et comme je n'ai pas compris le fonctionnement du fichier, je n'ai même pas pu essayer de faire cette fonction moi-même...)
D'avance merci :)
 

Dudu2

XLDnaute Barbatruc
Bonjour @Magnio,
Pour tester:
1701804647522.png

Ce classeur n'est pas destiné à faire de la conversion PDF -> Texte.
Il est destiné à fournir une fonction qui permet de le faire. Fonction à insérer dans un projet VBA.
Le bouton est là juste à titre de test avec le fichier dont le nom complet est placé en F7.

Prends un de tes fichiers PDF et copies-en le chemin complet en F7.
Pour copier le chemin complet, perso j'utilise le programme Extplorer qui se place en menu contextuel de l'Explorateur de fichiers Windows.
 

Discussions similaires

Statistiques des forums

Discussions
315 088
Messages
2 116 087
Membres
112 656
dernier inscrit
VNVT