[PROJET] PDF -> TXT -> CSV

Résolu
christophe68_is Messages postés 16 Date d'inscription mercredi 25 avril 2018 Statut Membre Dernière intervention 18 mai 2018 - Modifié le 16 mai 2018 à 22:09
christophe68_is Messages postés 16 Date d'inscription mercredi 25 avril 2018 Statut Membre Dernière intervention 18 mai 2018 - 18 mai 2018 à 09:15
Hello tout le monde,

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

Merci d'y penser dans tes prochains messages.

3 réponses

Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
16 mai 2018 à 21:29
Bonjour,

ton approche n'est pas la bonne.
Il existe plein d'outils .Net qui permettent de charger un pdf sans l'afficher, et d'accéder à ses données.

https://sourceforge.net/projects/itextsharp/

https://www.qwant.com/?q=open+pdf+dot+net&t=all

Et si ce que tu trouves est en C# (ben c'est le langage .Net originel)
https://www.qwant.com/?q=C%23+to+VB.Net&t=all
0
christophe68_is Messages postés 16 Date d'inscription mercredi 25 avril 2018 Statut Membre Dernière intervention 18 mai 2018
17 mai 2018 à 08:59
Bonjour,

merci pour ta réponse, j'avais effectivement déjà un peu fouiller sur le net et j'avais trouvé cette url: https://sourceforge.net/projects/itextsharp/

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.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
Modifié le 17 mai 2018 à 11:51
Bonjour,

Pourquoi un timer?

Ces 2 lignes suffisent:

   MsgBox(TextBox1.Lines.Length)'nombre de lignes
        MsgBox(TextBox1.Lines(3))' affiche la 4ème ligne


0
christophe68_is Messages postés 16 Date d'inscription mercredi 25 avril 2018 Statut Membre Dernière intervention 18 mai 2018
18 mai 2018 à 09:15
Merci, en effet c'est ce que j'ai fait, en récupérant les valeurs dans des variables! Je me complique la vie pour rien, :-)
0
Rejoignez-nous