Donnez vie à vos documents numériques !
 

Trier des pages sur un critere "texte"

abracadabraPDF Forums PDF – Général Trier des pages sur un critere "texte"

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45798
    moxuox
    Membre

    Bonjour à tous,

    J’ai fait quelques recherches sur le forum, mais je n’ai rien trouvé répondant à ma demande.
    Voici donc ce que je souhaiterais faire :
    Je reçois chaque semaine un fichier PDF contenant entre 1000 et 2000 pages.
    Ce que je voudrais réaliser, c’est d’après un critère “texte”, c’est a dire un mot,  extraire toutes les pages qui contiennent ce mot.
    Par exemple toutes les pages contenant “Rouen” serait exportées vers l’imprimante virtuelle.
    Cela semble simple, mais malgré mes recherches je n’ai pas trouvé.

    À noter que j’ai une version Pro d’Acrobat.

    Merci d’avance de votre aide !
    :soleil:

Affichage de 36 réponses de 1 à 36 (sur un total de 36)
  • Auteur
    Réponses
  • #63329
    Merlin
    Maître des clés

    Bonjour et bienvenue.

    Veux tu extraire les pages dans des fichiers séparés ou les réunir dans un seul ?
    Pourquoi les exporter vers une imprimante virtuelle ? Dans quel but ?

    #63330
    bebarth
    Maître des clés

    bonjour,
    Ce n’ai pas du “tout simple” mais j’ai déjà fait quelque chose comme ça…
    Même question que Merlin : au final tu veux des fichiers individuels ou un seul fichier final ?
    @+
    :bonjour:

    #63331
    moxuox
    Membre

    Bonjour,

    Je souhaiterai regrouper les pages  identiques dans un seul fichier.
    Par exemple un fichier “rouen” comme dans mon exemple, un autre “paris” un autre “marseille”
    L imprimante virtuelle c etait pour regouper ces pages en un fichier justement :)

    merci à vous !

    #63332
    bebarth
    Maître des clés

    bonjour,
    je pense que je devrais avoir quelque chose pour toi !
    Je n’aurais pas le temps de regarder ce weekend, mais promis dès lundi.
    @+
    :bonjour:

    #63333
    Merlin
    Maître des clés

    L’imprimante virtuelle c’était pour regrouper ces pages en un fichier justement

    Pourquoi il ne faut jamais faire ça : https://is.gd/sRpyYK

    La fonction d’enregistrement d’Acrobat Pro est plus simple à utiliser et pas du tout destructrice pour les fichiers PDF.

    #63334
    moxuox
    Membre

    merci à vous deux pour toutes ces infos !  :bonjour:
    à lundi !  :extra:

    #63335
    bebarth
    Maître des clés

    bonjour,
    voici donc une action que j’ai créé à partir de 2-3 scripts déjà réalisés (il reste peut être quelques variables inutiles…).
    Ici, pour accélérer le processus, je ne vérifie qu’une fois si le mot est présent sur la page, puis passe à la page suivante.
    J’ai fait quelques vérifications et cela fonctionne. J’espère n’avoir rien oublié, sinon merci de me signaler le/les problèmes(s).
    @+
    :bonjour:

    #63336
    moxuox
    Membre

    Bonjour, tout d’abord merci pour le script ! je suis un néophyte dans ce domaine, mais j ai reussi à le recuperer via Notepad++ et l’inserer dans le fichier. Toutefois, il me donne un message d’erreur le voici : Syntaxerror : missing ; before statement 3 : à la ligne 4
    la j’ai essayé de modifier , mais rien n y fait .  Merci !

    #63337
    bebarth
    Maître des clés

    bonsoir,
    pourquoi ne charges-tu pas l’action ??? juste un double clique sur le fichier .sequ puis tu la lances (cf. copies d’écrans).
    Je viens de chercher le mot “document” et extraire les pages dans l’api reference (779 pages) sans aucun problème en un peu plus de 5 minutes !!!
    @+
    :bonjour:

    #63338
    moxuox
    Membre

    Merci Bebarth ! ça marche très bien ! je pensais qu’il fallait insérer le script directement… avec ta méthode c est nettement plus simple ! petite question : dans le fichier généré, le mot clé est encadré en rouge. Comment supprimer ce cadre? le but est de pouvoir retrouver les pages sélectionnées dans leur état initial.
    Encore merci pour ce script et pour ton aide ! :)

    #63339
    bebarth
    Maître des clés

    bonjour,
    dans ce cas, tu supprimes les lignes :

    Code:
                //Créer un rectangle sur le mot trouvé
                var q = this.getPageNthWordQuads(p, i);
                …
                // Epaisseur des bords
                l.borderWidth = 2;

    @+
    :bonjour:

    #63340
    moxuox
    Membre

    Merci Bebarth, je regarde ça dans le week end ! mais ça marche c’est top ! :)

    #63341
    Merlin
    Maître des clés
    #63342
    Simon
    Membre

    Bonjour à toutes et à tous,

    Je recherche également une solution pour pouvoir extraire toutes les pages contenant un mot clé (numéro d’identifiant).

    Un de mes programmes génère environ 200 pages de factures. Exemple :

    Page N°1 : Facture Client A
    Page N°2 : Facture Client A
    Page N°3 : Facture Client A
    Page N°4 : Facture Client B
    Page N°5 : Facture Client C
    etc..

    Je peux les distinguer par le numéro d’identifiant du client. (A, B, C, etc.)

    Je souhaite que toutes les factures du Client A soient dans un seul fichier pdf, les factures du Client B dans un autre fichier pdf, etc.

    Je dispose d’Adobe Pro également.
    [font=verdana, arial, helvetica, sans-serif]Pouvez-vous me venir en aide ?[/font] :geek:

    Merci à vous :)

    #63343
    Merlin
    Maître des clés

    Bonjour et bienvenue

    As-tu essayé ce qui est proposé ci-dessus ?

    #63344
    bebarth
    Maître des clés

    bonjour,
    La complexité va dépendre de comment c’est indiqué !
    J’imagine que tu ne peux pas partager de fichier, alors peux-tu faire une copie d’écran de cette zone (numéro bidon, mais qui ressemble à ce qu’il pourrait être).
    Dans ce cas il ne faut pas rechercher un mot (car on est supposé ne pas connaitre tous les numéros), mais “Facture Client” (2 mots) qui précèdent ce numéro.
    @+
    :bonjour:

    #63345
    Simon
    Membre

    Bonjour,

    Merci pour vos retours très rapides :)

    Vous trouverez en PJ à quoi cela ressemble. Cet en-tête est présent sur chacune des 200 pages. Vous l’aurez compris, le numéro d’identifiant (compte) peut se trouver sur une ou plusieurs pages :)

    Bien à vous :)

    #63346
    Merlin
    Maître des clés

    On peut utiliser le GREP pour détecter une séquence de six chiffres :

    d{6,6}

    Mais je ne vois pas bien ce qui suit, on dirait une barre…

    #63347
    Simon
    Membre

    Oui, il s’agit de “–” mais pas d’importance, nous avons des numéros de compte sur 6 caractères uniquement :)

    En effet, cette solution peut me convenir !

    Je peux également avoir une table de correspondance si besoin. Ex : Client A = 500500, Client B = 600600, etc.

    Nos numéros de compte sont déjà définis et sont toujours les mêmes (cela change très rarement)

    #63348
    bebarth
    Maître des clés

    Je regarde ça rapidement (tout est relatif en ces temps de confinement => certainement demain).
    Je mets un fichier de correspondance .csv en pièces jointe du document pour enregistrer les différents nouveaux fichier avec le nom du client.
    @+
    :bonjour:

    #63349
    Merlin
    Maître des clés

    Oui, il s’agit de “–” mais pas d’importance, nous avons des numéros de compte sur 6 caractères uniquement

    Justement, c’est super important d’avoir quelque chose de caractéristique avant et/ou après la séquence recherchée. Ça permet de plus facilement éviter de capter n’importe quelle séquence de 6 chiffres.
    :Smiley03:

    #63350
    Simon
    Membre

    Bonsoir,

    J’ai testé la séquence “Trouver un mot et extraire les pages” selon le numéro du client, ex : 500083, et cela m’extrait bien les pages souhaitées.

    J’ai essayé 500083– et 500083—- et cela ne fonctionne pas.

    J’ai également essayé avec le nom du client mais ça ne fonctionne pas non plus, il ne reconnait pas le texte.

    Je te transfère en pièce-jointe une facture type pour que tu puisses effectuer des tests de ton côté également.

    Merci beaucoup pour ton aide :)

    #63351
    bebarth
    Maître des clés

    bonjour,
    Désolé, ça ne sera pas pour aujourd’hui ! Moins de temps à consacrer et plus compliqué que prévu.
    Jusqu’ici, pour moi, l’ordre des mots sur une page était celui du sens de lecture (et ça a toujours fonctionné).
    Pour ton fichier, ce n’est pas le cas ! Pourquoi ???
    Si tu veux essayer, tu lances de la console :

    Code:
    for (var p=0; p    var nbMots=this.getPageNumWords(p);
        for (var i=0; i        var leMot=this.getPageNthWord(p, i, true);
            console.println(i+” : “+ leMot);
        }
    }

    Tu vois !!!
    Ça veut dire que pour ton fichier il faut tester la position des tous les mots…
    Merlin, as-tu une explication ?
    @+
    :bonjour:

    #63352
    Merlin
    Maître des clés

    Je suppose que la moulinette qui a servi à générer ce PDF n’est pas très respectueuse des spécifications du format et place les mots à l’aveuglette.
    Ci-joint le même PDF auquel j’ai appliqué le balisage automatique d’Acrobat Pro : les mots s’affichent dans l’ordre de lecture.

    Mais pourquoi vouloir détecter la position des mots ?
    Comme on la chance que ce qu’on cherche (six chiffres consécutifs) n’existe pas ailleurs dans les pages il suffit de comparer leur valeur avec une regex GREP qui ne capte que les “mots” entiers de six chiffres (les tirets ne sont pas comptés comme des mots ni avec, on le voit dans les résultats du script : ils n’apparaissent pas).

    Ces deux regex sont utilisables (et testées, contrairement à la précédente qui est trop gourmande) :

    bd{6,6}b
    ou

    #63353
    bebarth
    Maître des clés

    Ci-joint le même PDF auquel j’ai appliqué le balisage automatique d’Acrobat Pro : les mots s’affichent dans l’ordre de lecture.

    Cool, je ne connaissais pas. J’ai essayé et ça fonctionne bien, par contre il me semble difficile de placer le balisage dans une action vu qu’il faut sélectionner manuellement une zone !

    Mais pourquoi vouloir détecter la position des mots ?

    Parce que je récupère également le nom de la société qui se trouve à côté du numéro de compte. Il faut vérifier que tous les mots de ce nom se trouvent sur la même ligne.

    @+
    :bonjour:

    #63354
    Merlin
    Maître des clés

    1. Normalement le balisage automatique fonctionne directement, sans rien demander.
    Pas de souci pour l’automatiser (ci-joint).

    2. OK, je comprend.

    #63355
    bebarth
    Maître des clés

    bonjour,
    C’est ce que j’ai fait, mais lorsque je lance l’action ça demande de sélectionner une zone !
    @+
    :bonjour:

    #63356
    Merlin
    Maître des clés

    Ci-joint une action qui ne demande rien.
    Je suppose que tu n’as peut-être pas choisi la bonne commande.  :Euuuh:

    #63357
    bebarth
    Maître des clés

    bonjour,
    Voici le résultat final.
    Le fichier de l’action est en pièce attachée au document joint.
    Là aussi, je me suis un peu lâché !!!

    Ci-joint une action qui ne demande rien.

    Effectivement, elle ne demande rien et fonctionne très bien.
    Par contre, intégrée à mon script et sur un document de 1350 pages, j’ai fait un essai sans (4 minutes) et un essai avec (plus d’une heure et demi). Et il manque un fichier final !!!

    #63358
    Merlin
    Maître des clés

    et un essai avec (plus d’une heure et demi)

    Ça ne me surprend pas, ce sont des opérations complexes.
    En tout cas, chapeau bas encore une fois.
    :bravo:

    #63359
    Simon
    Membre

    Bonsoir à toutes et à tous,

    Je souhaitais te remercier pour ce script qui fonctionne à la perfection !!! Chapeau l’artiste !  :bravo: :bravo:

    Malheureusement, j’ai une petite erreur sur mon fichier de 160 pages :

    Recherche sur page 1
    TypeError: pts is null
    4990:byteCodeTool”

    La différence qu’il y a par rapport aux pages PDF que l’on a testé, c’est qu’il y a des pages sur lesquelles il n’y a pas le pied de page “Coupon à joindre à votre règlement” car il y a 3 pages de factures par exemple, et ce pied de page est inséré à la dernière page. J’ai essayé plusieurs scénarios, et dès l’absence de pied de page, le script bloque et affiche cette erreur.  :mur:

    Je te joins un fichier PDF qui reproduit cette erreur. La page 1 est correctement traitée (pied de page présent), tandis que l’erreur s’affiche sur la page 2 (pied de page absent) car le pied de page se situe sur la page 3.

    Je te remercie énormément pour ton aide.  :bonjour:

    Bonne soirée

    #63360
    bebarth
    Maître des clés

    bonjour,
    Je pense que le fait qu’il n’y a pas de coupon n’est qu’une coïncidence. Il doit y avoir une erreur (laquelle ????).
    Si tu lances l’action de balisage automatique de Merlin, il n’y a plus de problème :
    https://abracadabrapdf.net/forum/index.php?action=dlattach;topic=3410.0;attach=5162
    Ci-joint ton fichier après balisage automatique.
    @+
    :bonjour:

    #63361
    Simon
    Membre

    Je vous remercie vous deux, effectivement, il n’y a plus de message d’erreur.

    En revanche, après la fin du script, seulement 6 nouveaux fichiers ont été créés.

    Lorsque je relance le script, il m’extrait qu’une seule page sur les 156…  :doute:

    Création des différents fichiers
    Création dufichier pour N° de compte : Sans numéro de compte
    ––––––––––––––
    Fin du process : 02-04 22:50
    Durée du process : 3minutes 8.6 secondes

    Est-ce que cela signifie qu’il ne reconnait pas le nom de la société ?  :Euuuh:

    #63362
    bebarth
    Maître des clés

    bonjour,

    … Et il manque un fichier final !!!

    Lorsque j’avais essayé le balisage automatique, il me manquait également un fichier, mais je n’ai pas cherché le pourquoi !!!
    Dans la version précédente du script, le numéro de compte était supposé être le mot suivant le mot “Compte”, ce qui était apparemment tout le temps vrai avant le balisage.
    Après balisage, il semble que ce ne soit plus le cas. J’ai donc modifié le script qui maintenant revérifie tous les mots après avoir trouvé le mot “Compte”, qui vérifie si c’est bien un nombre et sa position par rapport au mot “Compte”.
    Idem pour les mots du nom de client.
    Ci-joint une nouvelle action qui du coup devrait être un peu plus lente…
    @+
    :bonjour:

    #63363
    Simon
    Membre

    Merci bien ! :)

    Je teste ce soir et je te fais un retour !

    Excellente journée.

    #63364
    Merlin
    Maître des clés

    Je teste ce soir et je te fais un retour !

    C’est un test vraiment approfondi !
    :Smiley01:

Affichage de 36 réponses de 1 à 36 (sur un total de 36)
  • Vous devez être connecté pour répondre à ce sujet.