gnieark
Messages postés53Date d'inscriptionjeudi 17 août 2006StatutMembreDernière intervention22 octobre 2010
-
14 nov. 2006 à 22:51
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
26 mars 2009 à 15:11
en vb6, je cherche comment connaitre le nombre de pages d'un fichier .pdf
j'ai essayé en utilisant le composant acropdf, en ouvrant un fichier, je n'ai pas trouvé de fonction de type "acropdf1.getnombredepages"
ensuite j'ai cherché si en ouvrant un pdf en mode texte ("open for binary as #1") les sauts de pages n'étaient pas indiqués par un séparateur. le nombre de fois que je trouve "stream" ne correspond pas au nombre de pages et n'est pas un multiple. Bref rien trouvé, pas de séparateur qui paraisse être un saut de page... point de départ
Quelqu'un aurait une idée, juste une piste (ou carrément la solution ;) ) SVP?
Merci d'avance.
______________________
Gnieark, le cri du cochon fou!
gnieark
Messages postés53Date d'inscriptionjeudi 17 août 2006StatutMembreDernière intervention22 octobre 2010 20 nov. 2006 à 15:13
voila ça donne ça le code: et ile s'appelle comme ça: i = nbepagespdf(c:\lepdf.pdf)
Private Function nbepagespdf(ByVal pdffilename As String) As Integer
Dim f As Integer
Dim buffer As String, table() As String
f = FreeFile
Open pdffilename For Binary As #f 'ouvrir le fichier
buffer = Space$(LOF(f))
Get #f, , buffer 'copie du fichier dans la variable buffer
Close #f 'fermer le fichier
'découpage avec le split
table() = Split(buffer, "<</Type/Page")
'le nombre de pages correspond au nombre d'éléments
nbepagespdf = UBound(table())
gnieark
Messages postés53Date d'inscriptionjeudi 17 août 2006StatutMembreDernière intervention22 octobre 2010 20 nov. 2006 à 14:19
^^ la méthode est bonne.
Et ça m'a permis de me mettre sur la voie. Un grand merci. En fait je vais tester le nombre de fois que je trouve "<</type/page" (c'est le début du page tree) et sur les quelques documents testés ça correspont bien au nombre de pages...
cs_gogomanu
Messages postés29Date d'inscriptionmardi 7 janvier 2003StatutMembreDernière intervention26 mars 2009 26 mars 2009 à 14:58
gnieark: Je vois une seule erreur possible au fait de compter les "/Type /Page", c'est qu'en théorie il me semble qu'il est possible d'utiliser deux fois la même page:
Enfin cela semble tellement peu utile et rarissime que ton code doit être tout le temps bon.
kowalska: Je ne comprends pas pourquoi Renfield t'as envoyer bouler à propos de ta question
En fait freefile( ) sert simplement à récupérer un numéro de fichier libre: si tu ouvres plusieurs fichiers simultanément dans plusieurs fonctions, ou dans une fonction récursive, cela peut être compliqué pour savoir si tu as déjà ouvert le fichier #1, #2, #3 ... donc freefile( ) te donne simplement un numéro disponible.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 26 mars 2009 à 15:11
je l'ai envoyé "boulé" pour une raison simple.
Il joue en C#
Ca ne sert a rien de s'attarder sur le fonctionnement de FreeFile, qui est propre a VB6
l'idée est de saisir l'algo, pas de rentrer dans des considérations propre aux langages.