Extraire des données dans un PDF

Shaegal Messages postés 110 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 12 mai 2021 - 22 mars 2012 à 15:52
Shaegal Messages postés 110 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 12 mai 2021 - 26 mars 2012 à 14:38
Bonjour,

Sur mon poste, j'ai Adobe Reader 9.1.0.

J'ai, pour le moment, 275 fichiers PDF dont j'ai besoin de récupérer certaines données techniques importantes. D'autres documents vont suivre.

Y'a-t-il un moyen d'extraire lesdites données afin de les mettre dans un tableau (à l'instar de StreamReader peut lire dans un document Word par exemple)?

Merci d'avance...

12 réponses

Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 4
23 mars 2012 à 07:40
Tu télécharges cette archive et tu l'extrait:
http://text-mining-tool.com/TextMiningTool%201.1.42.zip

Tu télécharges .Net Reflector et t'ouvre le fichier TextMiningTool.exe.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 mars 2012 à 07:46
un pdf n'est bien souvent qu'un fichier texte... le contenu est en clair a l'intérieur la plupart du temps...

peux etre zippé, crypté, etc. a voir.

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 4
23 mars 2012 à 08:06
Salut Renfield !!!!

Bah alors:
    Imports System.IO
    Public Class SaveClass
    Public Function GetContents(ByVal FullPath As String)
    Dim contents As String
    Dim read As StreamReader
    Try
    read = New StreamReader(FullPath)
    contents = read.ReadToEnd
    read.Close()
    Return contents
    Catch ex As Exception
    MsgBox(ex.Message)
    End Try
    End Function
    Public Function SaveTextToFile(ByVal strData As String, _
    ByVal FullPath As String) As Boolean
    Dim objReader As StreamWriter
    Try
    objReader = New StreamWriter(FullPath, True)
    objReader.WriteLine(strData)
    objReader.Close()
    Return True
    Catch Ex As Exception
    Return False
    End Try
    End Function


Header version header; PDF-1 , 2, 3, 4 ???:
public bool EsCabeceraPDF(string fileName)
    {
        byte[] buffer = null;
        FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
        BinaryReader br = new BinaryReader(fs);
        long numBytes = new FileInfo(fileName).Length;
        //buffer = br.ReadBytes((int)numBytes);
        buffer = br.ReadBytes(5);

        var enc = new ASCIIEncoding();
        var header = enc.GetString(buffer);

        //%PDF−1.0
        // If you are loading it into a long, this is (0x04034b50).
        if (buffer[0] == 0x25 && buffer[1] == 0x50
            && buffer[2] == 0x44 && buffer[3] == 0x46)
        {
            return header.StartsWith("%PDF-");
        }
        return false;

    }



Et ^^; La doc:
http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf
0
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 4
23 mars 2012 à 08:13
J'oubliais: VB6 PDF to TEXT:
    Private Sub cmdCreateLog_Click()
      Dim lngLocation As Long
      Dim strLine     As String
     
      Open "c:\test.pdf" For Binary As #1   ' Open file just created.
      Open "c:\pdfTest.txt" For Output As #2
     
      Do While lngLocation < LOF(1)   ' Loop until end of file.
         strLine = Input(1, #1)    ' Read character into variable.
         lngLocation = Loc(1)   ' Get current position within file.
         Print #2, lngLocation & "     " & Replace(Replace(strLine, vbLf, "line feed"), vbCr, "carriage return") & vbCrLf;
      Loop
      Close #1   ' Close file.
      Close #2
      End
    End Sub 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Shaegal Messages postés 110 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 12 mai 2021 1
23 mars 2012 à 10:46
Bonjour à tous et merci pour ces réponses.

Duke49:
As-tu essayé ton code? Chez moi (VB), il donne des caractères ASCII indescriptibles sur seulement deux ou trois lignes.
Mes fichiers pdf comportent des tableaux et autres fioritures. Mais même en ayant créé (pour essai) un pdf ne comportant que des mots, j'ai eu ça:
%PDF-1.4
%�쏢
5 0 obj
<</Length 6 0 R/Filter /FlateDecode>>
stream
x��VMs�0��W���`����Ņ��0e�
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 mars 2012 à 11:29
Bonjou,
1) existe : [http://sourceforge.net/[url= Tapez le texte de l'url ici.]projects/itextsharp/]Tapez le texte de l'url ici./url
2) et on voit ici comment l'utiliser alors :
En utilisant le moteur de recherche de ce forum


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 mars 2012 à 11:31
premier lien raté ===>> Tapez le texte de l'url ici.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Shaegal Messages postés 110 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 12 mai 2021 1
23 mars 2012 à 13:12
Oups! je n'ai pas précisé que ce n'était pas un lien mais un copié/collé du texte que que je récupère en utilisant StreamReader. Je n'aurai pas du le mettre en bleu, d'où la confusion.

Au temps pour moi... ;-)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 mars 2012 à 15:29
/FlateDecode

compressé ...
a decompresser, donc ^^

ZLib est ton ami


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
Shaegal Messages postés 110 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 12 mai 2021 1
26 mars 2012 à 10:14
Salut Renfield,

Je ne sais pas si c'est compressé. Comme je l'ai dit plus haut, j'ai créé un PDF test et le résultat est le même.
Je ne connais pas la méthode d'encodage PDF. Sans doute faut-il importer une dll mais laquelle? Il y a peu de sujet la-dessus.
0
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 4
26 mars 2012 à 10:37
Je sais bien que tu souhaite une source en VB mais il faut bien ce lancer un jour dans les traductions ^^. Comme de la écrit ucfoutu, iTextSharp est une excellente open source; je te redonne le lien pour télécharger la source en C#, essaie de traduire les bouts de codes qui t’intéresses en VB: http://sourceforge.net/projects/itextsharp/files/latest/download
0
Shaegal Messages postés 110 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 12 mai 2021 1
26 mars 2012 à 14:38
Salut Duke49,

En fait, le lien de ucfoutu n'apparaissait pas chez moi et j'ai cru qu'il avait pris mon texte pour ... un lien!

Bref, merci pour ledit lien. Il est vrai que je ne fais que du VB. Il est vrai aussi qu'apprendre à lire d'autres langages me serait fort utile. J'ai d'ailleurs l'objectif de développer en Java (mobiles oblige).
C'est juste le temps qui me manque. Et là, je n'ai pas ce temps. J'ai même commencer à travaillé les fichiers PDF ... à la main, car j'ai la pression derrière moi.

Alors, si quelqu'un pouvais me traduire ce bout de code sus-cité, j'apprendrai plus vite (dans l'urgence) dans le langage que je connais que d'apprendre d'abord un langage "inconnu", même s'il y a des similitudes.
Ce n'est pas de la fainéantise car j'aime programmer, mais bien de l'urgence. Dans d'autres circonstances, j'aurai branché mon cerveau sur "apprendre"...

Merci d'avance.
0
Rejoignez-nous