PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Coordonnées X,Y du texte résultat d'un OCR dans un PDF
Coordonnées X,Y du texte résultat d'un OCR dans un PDF
Iniciado por Jean-Marc NAHON, 29,abr. 2020 08:37 - 4 respuestas
Miembro registrado
47 mensajes
Publicado el 29,abril 2020 - 08:37
Bonjour,

Windev propose une fonction pour lire le contenu du texte présent dans un PDF
MaChaîne est une chaîne
MaChaîne = PDFVersTexte("C:\Temp\MonDocument.pdf")
// Affichage dans un champ de saisie multiligne
SAI_SaisieTexteMulti = MaChaîne


Je voudrais connaitre pour chacun des mots les coordonnées x,y, largeur, hauteur du mot dans le PDF, par exemple pour surligner celui-ci dans le PDF.
J'ai essayé avec ItextSharp, mais je me casse les dents... En attente de vos idées.

--
Jean-Marc NAHON (Gestform)
Miembro registrado
4.362 mensajes
Publicado el 29,abril 2020 - 08:55
Bonjour,
Regarde là : https://doc.pcsoft.fr/fr-fr/?1000024556&name=pdfelementtexte_type_variable, tu as les propriétés ..X et ..Y qui devraient t'aider à résoudre ton problème.
Pour récupérer le texte, par exemple pour vérifier s'il correspond à la recherche, il faut déclarer ton pdfElementTexte via la propriété ElémentTexte d'un pdfPage cf https://doc.pcsoft.fr/fr-fr/?1000024904

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
47 mensajes
Publicado el 29,abril 2020 - 09:40
merci beaucoup, super nouvelle.. je suis en version 24 et je traîné à installer la 25, je n'ai plus le choix ;-)

--
Jean-Marc NAHON (Gestform)
Miembro registrado
4.362 mensajes
Publicado el 29,abril 2020 - 09:48
Par contre pour le surlignage je n'ai pas d'idées dans la mesure où les propriétés ne sont qu'en lecture seules.

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
47 mensajes
Publicado el 29,abril 2020 - 11:13
Bonjour,

Pour le surlignage j'ai trouvé avec itextSharp, voici un exemple de code qui ajoute en haut à droite d'une page A4 un carre jaune transparent à 30%
FichierIn est une chaîne="C:\Mes Projets\Pdf windev\Exe\referentiel\pdf avec ocr.pdf"
FichierOut est une chaîne="C:\Mes Projets\Pdf windev\Exe\referentiel\pdf avec ocr_marque.pdf"
PosXGauche est un entier=450
PosYbas est un entier=593
posXDroit est un entier=600
PosYHaut est un entier=825

MonFichierPDF est un PdfReader(FichierIn)
fluxSortie est un FileStream(FichierOut, FileMode.OpenOrCreate)
pdfStamper est un PdfStamper(MonFichierPDF,fluxSortie)

pclPageRectangle est un "itextsharp.text.rectangle" dynamique = MonFichierPDF.GetPageSizeWithRotation(1)

pdfData est un PdfContentByte dynamique = pdfStamper.GetOverContent(1)

//create new graphics state and assign opacity
graphicsState est un PdfGState()
graphicsState.FillOpacity = 0.3 // 1 pas de transparence, 0.3 30 % de transparence

//set graphics state to pdfcontentbyte
pdfData.SetGState(graphicsState);

//définit une couleur
//pclCoul est un "itextsharp.text.Color" dynamique itestSharp 4
pclCoul est un "itextsharp.text.BaseColor" dynamique // itexteSharp 5

//pclCoul = allouer un "itextsharp.text.Color" (nCoulR,nCoulV,nCoulB) jaune
// pclCoul = allouer un "itextsharp.text.Color" (246,255,51) // itextsharp 4
pclCoul = allouer un "itextsharp.text.BaseColor" (246,255,51) // itextsharp 5

//définit un rectangle
pclRectangle est un "itextsharp.text.rectangle" dynamique
pclRectangle = allouer un "itextsharp.text.rectangle" (PosXGauche,posXDroit,PosYbas,PosYHaut)
pclRectangle.BackgroundColor = pclCoul
pclCoul = allouer un "itextsharp.text.BaseColor" (0,0,0)
//pclRectangle.BorderColor = pclCoul aucun effet
pdfData.Rectangle(pclRectangle)


//close stamper and output filestream
pdfStamper.Close()

LanceAppliAssociée(FichierOut)

Ferme(FEN_Ajout_tampon_PDF)


merci encore...

--
Jean-Marc NAHON (Gestform)