2012-10-13 2 views
1

J'ai trouvé beaucoup de sites et d'affichages que la question est la même que la mienne mais ce qu'ils semblent tous avoir en commun, c'est que les gens y répondent avec des exemples d'insertion de texte spécifique Emplacements. J'ai un document PDF qui est généré par un autre programme sur lequel je n'ai aucun contrôle et il a une ligne pour un client à se connecter mais cette ligne n'est pas dans une position absolue donc un service que nous utilisons appelé AssureSign ne fonctionnera pas correctement vous devez savoir où est la position de la ligne de signature. J'ai donc besoin de créer un nouveau programme qui va trouver la position de la ligne de signature et envoyer cette information au système Assuresign.ITextSharp Trouver les coordonnées d'un texte spécifique en PDF

Cela devrait vraiment être simple, mais pour une raison quelconque, je ne suis pas l'obtenir

Répondre

1

Vous pouvez utiliser le package analyseur de iText (Sharp) pour trouver la position d'un texte donné. Cependant, vous devez implémenter votre propre RenderListener, car le principal cas d'utilisation de ce package est l'extraction de texte, pas la recherche de position de texte.

Ce n'est pas aussi simple que vous pourriez le penser, par ex. les caractères individuels des mots peuvent entrer séparément dans n'importe quel ordre.

PS:

D'abord, vous devez savoir, cependant, si la ligne pour la signature se compose de caractères (comme votre question semble impliquer) ou si elle est un chemin tracé. De plus, vous devrez déterminer si cette ligne est unique dans le document.

Dans le premier cas, l'implémentation de RenderListener dont vous avez besoin doit inspecter les objets TextRenderInfo transmis pour traitement dans sa méthode RenderText. Si son contenu textuel contient ces caractères uniques qui construisent la ligne signatrue, vous devez stocker les données de position de ce TextRenderInfo. Si les caractères de ligne ne sont pas uniques, vous devrez trouver quelques critères supplémentaires les rendant uniques, par ex. une chaîne précédente ou éventuellement un fait que c'est la dernière occurrence de ces caractères dans le document. Dans ce dernier cas, la fonctionnalité du paquet analyseur doit être quelque peu étendue, car elle ne signale pas les chemins actuellement. Selon la liste de diffusion iText, une extension comme celle-ci est sur la liste ToDo.

+0

Je pense avoir trouvé un exemple de ce à quoi vous faites référence mais je ne sais pas comment l'utiliser. http://pastebin.com/LqDRDRd9 – scripter78

+0

Vous avez trouvé un exemple de personne dérivée de l'original iText LocationTextExtractionStrategy qui est un RenderListener. Vous devez créer un RenderListener différent qui recherche la chaîne que vous voulez trouver et retourne éventuellement sa position. – mkl

-1

Tout d'abord, en cas de simples mots sont l'anglais, vous pouvez trouver facilement analyser, mais quand vos documents ne sont pas en anglais, vous devez comprendre la police de votre langue exactally UNICODE.

+0

Le document est toujours en anglais. et la zone dont j'ai besoin pour trouver la position car je n'ai vraiment besoin que de la coordonnée Y en raison de la coordonnée X reste toujours la même. La zone est juste supérieure ou inférieure sur la page en fonction des éléments individuels – scripter78

0

This question isn't directly related to what you want to accomplish, but it is indirectly related

SCIC a affiché une grande application qui vous montre la tâche très difficile de localiser un texte spécifique, mais avec VB. Ce ne serait pas aussi simple que de le brancher sur un convertisseur vb> C#, mais il devrait être traduisible. Cela peut sembler une tâche facile à réaliser, mais PDF n'est pas un format de document, c'est un format d'affichage technique. La différence entre ces 2 est ce qui rend ce processus si long.

Questions connexes