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

NodeJS Discussion :

pdftron avec regex


Sujet :

NodeJS

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    octobre 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : octobre 2016
    Messages : 27
    Points : 25
    Points
    25
    Par défaut pdftron avec regex
    On a un problème de rechercher un regex dans un pdf. Certains sont marchés mais autres non.
    Voici mon code, merci d'avance pour la réponse.
    Le pattern2 ca marche mais j'ai mis le patterne3 ne marche pas.
    J'ai déjà essayé de mettre dans un guillemet("") et changer le pattern3 to string(pattern3.toString()) mais ça marche pas encore

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
     
        let pattern2 = "[a-zA-Z0-9._%+-]+[a-zA-Z0-9._%+-]+@[A-z]+[a-zA-Z0-9._%+-]+[a-zA-Z]";
        await search_redact(pattern2);
     
        const pattern3 = /\b(?:[A-Z]{2}[0-9]{6})\b/g
        await search_redact(pattern3 );
     
        function search_redact(pattern) {
            const main = async() => {
                try {
                    const doc = await PDFNet.PDFDoc.createFromUFilePath(pdffile);
                    doc.initSecurityHandler();
                    doc.lock();
                    const txtSearch = await PDFNet.TextSearch.create();
                    let mode = (PDFNet.TextSearch.Mode.e_whole_word | PDFNet.TextSearch.Mode.e_highlight) + PDFNet.TextSearch.Mode.e_reg_expression;
                    txtSearch.begin(doc, pattern, mode);
                    let result = await txtSearch.run();
                    while (true) {
     
                        if (result.code === PDFNet.TextSearch.ResultCode.e_found) {
                            let hlts = result.highlights;
                            hlts.begin(doc);
                            while ((await hlts.hasNext())) {
                                const quadArr = await hlts.getCurrentQuads();
                                for (let i = 0; i < quadArr.length; ++i) {
                                    //Coordonnée du mot trouvé dans le pdf 
                                    const currQuad = quadArr[i];
                                    const x1 = Math.min(Math.min(Math.min(currQuad.p1x, currQuad.p2x), currQuad.p3x), currQuad.p4x);
                                    const x2 = Math.max(Math.max(Math.max(currQuad.p1x, currQuad.p2x), currQuad.p3x), currQuad.p4x);
                                    const y1 = Math.min(Math.min(Math.min(currQuad.p1y, currQuad.p2y), currQuad.p3y), currQuad.p4y);
                                    const y2 = Math.max(Math.max(Math.max(currQuad.p1y, currQuad.p2y), currQuad.p3y), currQuad.p4y);
                                    redact_create(x1, y1, x2, y2, result.page_num); //Mettre un redact dans le coordonnée designé
                                    button_create(x1, y1, x2, y2, result.page_num); //Mettre un masque clickable dans le coordonnée designé
                                    break;
                                }
                                hlts.next();
                                break;
                            }
                            while (await hlts.hasNext()) {
                                await hlts.next();
                            }
                        } else if (result.code === PDFNet.TextSearch.ResultCode.e_page) {
                            ////////////////////////////////////////
                        } else if (result.code === PDFNet.TextSearch.ResultCode.e_done) {
                            ///////////////////////////////////////
                            break;
                        }
                        result = await txtSearch.run();
                    }
                } catch (err) {
                    console.log(err);
                }
    S'il vous plait, aide-moi

  2. #2
    Modérateur
    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    janvier 2011
    Messages
    15 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : janvier 2011
    Messages : 15 369
    Points : 38 292
    Points
    38 292
    Par défaut
    Bonjour,
    sans savoir vraiment ce que tu cherches à faire il va être difficile de t'aider

  3. #3
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    mars 2009
    Messages
    2 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : mars 2009
    Messages : 2 360
    Points : 5 176
    Points
    5 176
    Par défaut
    À la lecture des exemples présentés sur le site de pdftron, les patterns semblent être écrites dans une chaîne de caractères, sans délimiteurs, avec les antislashs doublés. (autrement dit comme pour la pattern2 qui elle fonctionne).
    Donc tente d'écrire: pattern3 = '\\b(?:[A-Z]{2}[0-9]{6})\\b'; ou plutôt pattern3 = '\\b[A-Z]{2}[0-9]{6}\\b'; puisque le groupe ne sert à rien.

    Après si tu ne trouves rien, c'est peut-être que tu n'as pas bien décrit ce que tu cherches dans la pattern, ou que ce que tu cherches n'est pas présent dans le document.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    octobre 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : octobre 2016
    Messages : 27
    Points : 25
    Points
    25
    Par défaut
    merci pour votre aide, le pattern3 ça marche dans un texte string sur le node mais le problème sur le pdf. Ca n'as pas encore résolu sur votre réponse.

  5. #5
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    mars 2009
    Messages
    2 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : mars 2009
    Messages : 2 360
    Points : 5 176
    Points
    5 176
    Par défaut
    Citation Envoyé par Cosmoknacki
    ce que tu cherches n'est pas présent dans le document
    C'est un scénario plausible, reste à savoir pourquoi précisément!

    je te conseille d'extraire par un autre moyen la partie du pdf où est censée se trouver la cible et de regarder s'il n'y a pas de caractères cachés entre les lettres et les chiffres que tu recherche. Quand je parle de caractères cachés, je pense en particulier au caractères Unicode U+2009 à U+200D qui sont soit des espaces très petits (que l'on peut rater à l'œil nu), soit des espaces dits "vide" de largeur nulle.

    Essaye quelque chose comme: pattern3 = '\\b[A-Z]\\s?[A-Z]\\s?[0-9]\\s?[0-9]\\s?[0-9]\\s?[0-9]\\s?[0-9]\\s?[0-9]\\b'; en changeant éventuellement les quantificateurs ? par des *, puis si tu obtiens quelque chose en éliminant les \\s* ou \\s?les uns après les autres pour savoir précisément, si de tels caractères sont bien présents, où ils se trouvent.

    Ce n'est qu'une hypothèse mais tu peux le tenter. Tu peux aussi essayer de supprimer les word-boundaries pour voir ce qui se passe.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme avec REGEX sous IE
    Par Death83 dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 18/07/2006, 20h02
  2. Problème avec Regex
    Par trihanhcie dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/07/2006, 14h50
  3. Réponses: 2
    Dernier message: 25/05/2006, 11h11
  4. [RegEx] analyseur de requette SQL avec RegEx - [casse tête]
    Par sebbod dans le forum Langage
    Réponses: 2
    Dernier message: 28/03/2006, 10h56
  5. Problème avec RegEx et une Query string
    Par Erakis dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 15h48

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