J’espère que vous allez bien. Je progresse sur mon apprentissage du langage VB (petit à petit), et je me lance dans un nouveau projet pour aider les utilisateurs à éviter de saisir des données répétitives extrait d'un document PDF.
Le but, ouvrir un fichier PDF, extraire l’ensemble des valeurs txt contenu dans les différents champs du document, et sélectionner certaines valeurs puis les extraire dans un fichier au format CSV.
J’ai commencé mon projet :
J’ai créé une fenêtre avec un objet : AxAcroPDF1 (fenêtre pour visualiser mon document PDF)
Un bouton pour sélectionner le document à ouvrir :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
RichTextBox1.Clear()
Me.OpenFileDialog1.Filter = String.Empty
Me.OpenFileDialog1.ShowDialog()
Me.AxAcroPDF1.LoadFile(Me.OpenFileDialog1.FileName)
Threading.Thread.Sleep(2000)
//j'ai remarqué qu'il fallait un temps pour charger le document, sinon le cc fonctionne pas
AxAcroPDF1.Focus()
My.Computer.Keyboard.SendKeys("^a", True)
//idem pour faire le CTRL a
Threading.Thread.Sleep(1000)
My.Computer.Keyboard.SendKeys("^c", True)
Je me base sur la function sendkeys, pour effectuer un copier/coller du document PDF, et récupérer les valeurs des champs en TXT
J’affiche le contenu de mon copier coller dans un RichTextBox.
Tout fonctionne parfaitement. Par contre j’ai des lignes, avec des retours à la ligne :
1 *******
2********
3********
X ********
Là où je coince, je veux créer un bouton pour juste extraire la ligne 3 et 4 dans un fichier CSV, j’ai aucune idée même de l’approche, si vous pouvez m’aider, se serait avec grand plaisir.
Merci par avance, Christophe
EDIT : Ajout des balises de code (la coloration syntaxique). Explications disponibles ici : ICI
L'afficher, cela m'intéresse beaucoup, car dans la fenêtre form, cela permet à l'utilisateur de sélectionner et visualiser les données du PDF.
J'ai un peu progressé sur mon petit projet, j'ai utilisé un timer1 pour compter les lignes, et j'ai modifié ma fenêtre de réception des donnée en utilisant : TextBox1.
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Label1.Text = "LINES : " & TextBox1.Lines.Length + 1
End Sub
A présent un petit label pour afficher le nombre de ligne, ça marche nickel, sauf que je dois faire "+1" pour avoir le résultat correct, je ne sais pas si il prend le 0 comme référence.
Maintenant que j'ai ça, il faut juste que je trouve comment faire une extraction de la ligne 12, 30, par exemple, ça c'est une autre histoire.