IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Documents Java Discussion :

extraire des fichiers sons contenu dans un pdf


Sujet :

Documents Java

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 178
    Points : 451
    Points
    451
    Par défaut extraire des fichiers sons contenu dans un pdf
    Bonjour à tous,

    Bon, désolé d'être un boulet mais ça fait une heure (je suis même en dessous de la réalité) que je cherche où poser ma question. Je suis pas vraiment sûr que ce soit ici, mais comme idéalement j'aimerais le faire en java... Si jamais un modérateur charitable veut bien mettre ma prose au bon endroit...

    Sinon mon problème est tout bête : je voudrais extraire des fichiers sons contenu dans un pdf.
    J'ai besoin de le faire "programatiquement" (j'ai beaucoup de fichiers et je dois automatiser ce processus).

    Je pensais être le dix-milième à vouloir faire ça et trouver rapidement sur le net mais rien (ou alors je suis pas dégourdi).

    J'ai à peu près compris que les informations étaient entre et (d'autant qu'en mettant le bloc dans un pdf minimal avec juste un lien on obtient le son) mais à part ça rien, je n'arrive même pas à identifier le format.

    Comme il est écrit "FlateDecode" dans la déclaration j'ai tenté de "décompressé" les fichiers mais ça n'est pas beaucoup plus concluant.
    Plus précisément
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <</B 16/E/Signed/Filter/FlateDecode/Length 18944/R 22050/Type/Sound>>stream
    Si quelqu'un a des pistes je suis preneur...



    ps : Pour info j'ai fait ma décompression en utilisant python (je ne tiens pas particulièrement à utiliser ce language mais je n'avais pas en tête de méthode pour le faire en java) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    pdf = open("mon_fichier.pdf", "rb").read()
    stream = re.compile(r'.*?FlateDecode.*?Sound.*?stream(.*?)endstream', re.S)
    block_count = 0
     
    for s in stream.findall(pdf):
        s = s.strip('\b\r\n')
        try:
            block_count = block_count + 1
            file_name = "sound_file_" + str(block_count)
            file = open(file_name, "a")
            file.write(zlib.decompress(s))
            file.close()
        except:
            pass

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    C'est vrai, ça, qui ne met pas de fichier audio dans un PDF ?

    Le plus gros problème pour faire en Java la même chose que ton programme Python, c'est que Java fait une distinction très nette entre texte (String, Reader, etc) et séquence binaire (byte[], InputStream, etc.) Or Java ne propose de faire de regex que sur du texte. Mais un PDF n'est pas du texte, donc flop, rien n'est proposé pour ça.

    Une idée serait de "faire passer" ton fichier PDF pour une String, en convertissant chaque octet du fichier en un char de valeur équivalente. Tout ce qui est ASCII restera donc tel que, et le reste sera au moins dans un état réversible.

    Ce qui permettrait de faire la même regex qu'en Python et d'extraire la partie qui est un fichier son.
    Il serait extrait sous forme de String telle que représentée avec notre méthode au-dessus, et il faudrait donc en refaire une séquence d'octets, en remplaçant chaque char par l'octet de valeur équivalente.

    La séquence binaire ainsi obtenue peut être décompressée avec GZIPInputStream.

    J'ai pas de PDF avec des fichiers dedans (curieusement ) donc je peux pas tester, mais ça devrait faire la même chose que ton exemple Python.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/08/2017, 09h01
  2. Réponses: 0
    Dernier message: 18/08/2016, 15h20
  3. [SP-2007] Extraire des fichiers Excel ou Csv contenu dans une liste sharepoint
    Par stardeus dans le forum SharePoint
    Réponses: 23
    Dernier message: 03/11/2010, 16h11
  4. Lecture fichier son contenu dans un jar
    Par cryptoo dans le forum Langage
    Réponses: 3
    Dernier message: 04/09/2007, 10h48
  5. Stocker / Extraire des fichiers dans une base Access
    Par bryan_fury75 dans le forum Bases de données
    Réponses: 5
    Dernier message: 14/06/2006, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo