PDF de l'analyse syntaxique en C++ (PoDoFo)
Salut, alors je suis en train d'analyser un texte de certains fichiers pdf et je voudrais utiliser PoDoFo, maintenant, j'ai essayé de chercher des exemples d'utilisation de PoDoFo pour analyser un fichier pdf cependant tout ce que je peux venir avec est des exemples de la façon de créer et d'écrire un fichier pdf qui n'est pas ce que j'en ai vraiment besoin.
Si quelqu'un a un tutoriel ou un exemple de l'analyse d'un fichier PDF avec PoDoFo ou avez des suggestions pour une autre bibliothèque que je peux utiliser, s'il vous plaît laissez-moi savoir. Aussi je sais qu'il est pdftotext sur linux, cependant, non seulement je ne peux pas l'utiliser, mais je préférerais de beaucoup être capable de faire tout ce dont j'ai besoin à l'interne et ne pas compter sur l'extérieur des programmes en cours d'installation.
Je n'ai pas, mais apparemment il ne fonctionne qu'avec Windows, ce qui n'est pas ce que je cherche. Merci bien!
OriginalL'auteur csteifel | 2012-07-30
Vous devez vous connecter pour publier un commentaire.
PoDoFo ne fournit pas un moyen de facilement extraire du texte d'un document, mais il n'est pas difficile à faire.
Charger un document dans un
PdfMemDocument
:Répéter sur chaque page:
Itérer sur toutes les commandes PDF sur cette page:
Le "jeton de processus" & "processus var" commentaires est là que ça devient un peu plus complexe. Vous êtes crus PDF commandes de processus. Heureusement, si vous n'êtes pas vraiment le rendu de la page et tout ce que vous voulez, c'est le texte, vous pouvez ignorer la plupart d'entre eux. Les commandes dont vous avez besoin à traiter sont:
BT
,ET
,Td
,TD
,Ts
,T
,Tm
,Tf
,"
,'
,Tj
etTJ
La
BT
etET
commandes de marquer le début et la fin d'un flux de texte, de sorte que vous voulez ignorer tout ce qui n'est pas entre unBT
/ET
paire.Le PDF langue est RPN base. Un flux de commande se compose de valeurs qui sont poussés sur une pile et des commandes qui pop des valeurs en dehors de la pile et de les traiter.
La
"
,'
,Tj
etTJ
commandes sont les seuls qui en fait générer un texte."
,'
etTj
retour d'une chaîne unique. Utilisationvar.IsString()
etvar.GetString()
à traiter.TJ
retourne un tableau de chaînes de caractères. Vous pouvez extraire de chacun avec:Les autres commandes sont utilisées pour déterminer le moment d'introduire un saut de ligne.
"
et'
également introduire des sauts de ligne. Votre meilleur pari est de télécharger la technique PDF d'Adobe et de rechercher le traitement de texte de la section. Il explique ce que chaque commande de plus de détails.Je l'ai trouvé très utile d'écrire un petit programme qui prend un fichier PDF et déverse le flux de commande pour chaque page.
Remarque: Si tout ce que vous faites est de l'extraction de texte brut avec aucune des informations de positionnement, vous n'avez pas réellement besoin de maintenir une pile de
var
valeurs. Tout le texte les commandes de rendu ont, au plus, un seul paramètre. Vous pouvez vous contenter de supposer que la dernière valeur dansvar
contient le paramètre de la commande en cours.Calme, détaillées et utiles réponse, vous pouvez également ajouter un peu d'info sur, si les images ont aussi des opérateurs et comment peut-on les identifier?
Je n'ai pas travaillé avec des images en fichiers PDF, donc je ne peux pas vous donner une réponse détaillée. Je suggère de regarder des images dans le PDF specs (Section 8.9: les Images).
Merci, je trouve que
Do
les opérateurs sont pour les images. Mais sa devient difficile de l'enlever œuvres d'art autres que les objets de l'image Comme arrière-plan de texte etc.Quand je suis en train de travailler avec du texte, je reçois la plupart de mes mots divisé en plusieurs objets au sein d'un tableau, sans le moindre égard pour les espaces. E. g.: (e)(v)(en)(inef)(f)(ectiv)(e)(until)(w)(e)(unders)(t)(ood)(some)(of)(its)(im)(por)(tant)(dif)(f)(erences). C'est au sein d'une seule variante qui a un TJ tag. Est-il quelque part d'autre que l'espace blanc de l'information est contenue pour quelque chose avec un TJ tag?
OriginalL'auteur Ferruccio
Je n'ai pas utilisé PoDoFo, mais une navigation rapide à travers la hiérarchie de classe sur leur page web API révèle:
(Doc API lien)
Donc, je voudrais juste spéculer ici, que vous n':
Alors j'imagine que vous naviguez dans l'arborescence du document en appelant
doc.GetObjects()
et la marche à travers ce tableau (voir PdfDocument classe)OriginalL'auteur paddy