Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Extraction d'images contenu dans un PDF

Flown720

XLDnaute Nouveau
Bonjour à tous,

J'aimerai pouvoir extraire les images de fichiers PDF en VBA ?
Actuellement, je converti les pdf par des solutions en ligne, mais dans le développement de mon activité, j'aimerai le faire par VBA pour automatisation et forcément gain de temps pour moi. J'aurai environ 5000 fichiers PDF à convertir...

J'ai déjà rechercher des solutions mais je n'arrive pas à trouver une solution qui fonctionne. C'est pour ça que je m'adresse à vous.

Merci d'avance, bonne journée
 

Staple1600

XLDnaute Barbatruc
Re

Cela fonctionne sur W10 64b/XL 32b
(comme je l'ai dit)
Je suppose donc que Flown a installé son Excel en 64 bits
(ou alors qu'il utilise un OS exotique)...>
Lu en commentaire là où j'ai glané la modif du code soumis par zebanx
""ÿØÿ" this can not used in chinese system"
 

Staple1600

XLDnaute Barbatruc
Re

[Remembering DateSerial(1997,8,29)]
Je suis inquiet.
Je les sens arriver.
Et on les laisse faire... de plein gré
Oui, je suis inquiet
Vite une bière...
Pourquoi cette inquiétude?
Parce que
J'aurai environ 5000 fichiers PDF à convertir...
Imaginons que chaque PDF contiennent en moyenne 4 pages avec disons 8 images par pages
Tourne la routine, tourne la routine, tourne la routine
On aura donc : 5000*4*8 images
Or seul ...un T-800 de Cyberdine pourra les scanner d'un coup d'œil.
Sarah, attends-moi j'arrive

[/Remembering - no fate but what we make]
 

Flown720

XLDnaute Nouveau
Salut à tous

Alors, sur le pc qui marche j'ai la config suivante Windows 7 64b et office 2013 64b

Par contre, depuis hier soir, j'ai pas pu tester le code modifié, je devrai pouvoir le faire cet aprem si tout va bien.
Alors pour mon cas, si c'est un problème de mémoire ou de temps de traitement je peux le faire par phase, j'ai pas de soucis avec ça (enfin pour le moment )
et juste pour info, je doit plutôt avoir 800 pdf d'environ 10pages mais avec 1 voir 2 max par page.

Donc, pour ce code-là fonctionne bien, pour ce que je veux faire, j'espère juste qu'il va marché sur l'autre PC qui est en windows 10 64b et office 2013 64b.

En tout cas, merci de votre précieuse aide


PS : au départ, j'avais dit 5000 pdf, mais il faut pas tous les traiter !! OUFF!!!
 

Flown720

XLDnaute Nouveau
Bonjour à tous,
Alors, @Staple1600 et @patricktoulon vous êtes des voyants... c'est eexactement ce qui se passe.
Je suis un peu bêta mais les tests que j'ai fait était bien sur des pdf contenant toutes les images en *.jpg à l'intérieur, sauf quand je suis passé sur mon pc au job, c'était pas un problème de config, mais c'est que j'ai des pdf qui contienent des jpg dedans.


Donc oui @patricktoulon il va falloir que je trouve les extensions qui est utilisé dans ces PDF pour les ressortir


En fait, je me suis pas méfié, car avec les convertisseurs en ligne, il me ressort les images en jpg

PS : Je viens de trouver ça

VB:
'Check which type of image it is
SELECT CASE Left(objFile, 3)
CASE "GIF" 'GIF
    strType = "GIF"
CASE "‰PN" 'PNG
    strType = "PNG"
CASE "ÿØÿ" 'JPG
    strType = "JPG"
END SELECT

SELECT CASE Left(objFile, 2)
CASE "BM" ' BMP
    strType = "BMP"
CASE "II" ' TIF
    strType = "TIF"
END SELECT

ça ressemble bien à un équivalent ;-)
 
Dernière édition:

Flown720

XLDnaute Nouveau
Bonjour @patricktoulon

Je viens de faire le même constat...
Après, j'ai pas beaucoup de connaissance mais je cherche pour essayer de comprendre
en tout cas, sur le PDF que j'ai avec des photos et qui fonctionne on retrouve bien le ÿØÿ



Sauf que les autres dont j'ai besoin d'extraire, j'arrive pas à trouver les caractère qui identifie les images.
 

zebanx

XLDnaute Accro
Bonjour à tous , le forum

Sur ce fil, il semble y avoir quelques pistes pour les autres extensions
Ce lien n'existe plus

Public Function GetImageBytesFromOLEField(oleFieldBytes As Byte()) As Byte()
Const BITMAP_ID_BLOCK As String = "BM"
Const JPG_ID_BLOCK As String = "ÿØÿ"
Const JPG_ID_BLOCK_END As String = "ÿÙ"
Const JPG_ID_BLOCK2 As String = "ÿ Ø ÿ"
Const PNG_ID_BLOCK As String = ChrW(137) & "PNG" & vbCr & vbLf & ChrW(26) & vbLf
Const GIF_ID_BLOCK As String = "GIF8"
Const TIFF_ID_BLOCK As String = "II*" & vbNullChar

A tester
@+
 

patricktoulon

XLDnaute Barbatruc
je viens de découvrir quelque chose encore
quand une image se trouve sur 2 pages du pdf(coupé en 2) on obtient des image en double il faudra donc ajouté un dico ou collection pour éviter les doublons
pour tout ce qui est autre que jpg ça ne fonctionne pas j'ai testé
 

Flown720

XLDnaute Nouveau
Re à tous,

je viens de faire le même constat @patricktoulon , je crois que j'y arriverai pas avec cette solution.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…