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.

Re, Bonsoir patricktoulon (et mes vœux les meilleurs)

Je n'ai pas dit que ce n'était pas normal ;)
Mais donc si dans les 50 000 pdfs et plus, il y en a qui contiennent autre autre chose que du jpg, alors l'image reste au chaud dans le PDF et personne ne connaitra alors jamais l'histoire de l'image qui n'en était pas vraiment une et qui pourtant était jolie comme une image.
;)

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

@Staple1600
oui bien sur
meilleurs veux également
peut être que changer ceci: imgstrt = "ÿØÿ" pour le split ainsi que l’extension de sortie en .wmf ou .bipmap fera l'affaire
faut il encore connaitre le code de ces deux extensions
A creuser ;)

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

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 ÿØÿ

1610099064004.png


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

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 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é
je viens de faire le même constat @patricktoulon , je crois que j'y arriverai pas avec cette solution. :(
 

Discussions similaires

Statistiques des forums

Discussions
312 115
Messages
2 085 447
Membres
102 889
dernier inscrit
monsef JABBOUR