Question

Je voudrais demander s'il est possible d'éditer des fichiers PDF à l'aide du xpdf bibliothèque et si oui comment? Je suppose que cela est possible, mais je ne pouvais pas trouver un tutoriel ni la documentation pour xpdf donc j'ai vraiment aucune idée :(. Je suis aussi ouvert à l'aide d'une autre bibliothèque si un autre a un soutien pour pdf édition. ma seule exigence d'une telle bibliothèque est qu'il doit être C ++ bibliothèque ou au moins un C un et doit être multi-plateforme (Windows et Linux)

J'ai besoin uniquement l'édition de base d'un fichier pdf par exemple:

  

"ceci est un texte dans un document pdf" serait remplacé par "c'est un text en format pdf" avec une couleur différente ainsi.

Merci pour toutes vos réponses!

Était-ce utile?

La solution

Juste pour que vous comprenez la portée de ce que vous vous embarquez, « l'édition de base » du contenu PDF est presque toujours non trivial.

Contenu de la page au format PDF est représenté par des programmes courts RPN que la peinture sur la page. Il est un petit langage similaire à PostScript sémantique, mais sans structures en boucle ou des définitions de fonctions (donc il n'y a pas de problème de l'arrêt). Dans un monde sain d'esprit, votre texte sur la page va être représentée par quelque chose comme ceci:

BT /F1 12 Tf 72 720 Td (this is a text in a pdf document) Tj ET

qui, une fois traduit en quelque chose de plus familier, est ceci:

BeginText();
SetFont(F1, 12.0);  // Font 1, 12.0 pt
TextMoveTo(72, 720);
ShowText("this is a text in a pdf document");
EndText();

Donc dans ce cas, vous devez le transformer en quelque chose comme ceci:

BeginText();
SetFont(F1, 12.0);  // Font 1, 12.0 pt
TextMoveTo(72, 720);
ShowText("this is a ");
SetFont(F2, 12);
ShowText("text");
SetFont(F1, 12);
ShowText(" in a pdf document");
EndText();

qui deviendrait:

BT /F1 12 Tf 72 720 Td (this is a ) Tj /F2 12 Tf (text) Tj /F1 12 Tf
( in a pdf document) Tj ET

dans l'équivalent PDF. Le problème est de nombreuses fois:

  1. Vous devez extraire sur la page et toutes ses ressources (non trivial)
  2. Vous devez générer une nouvelle page, insérer de nouvelles ressources (vous ajoutez une nouvelle police), intégrer la police si admissible
  3. Modifier le flux de contenu de la page pour inclure votre contenu modifié.

3 est où vous allez vous attardez, parce qu'il ya un nombre infini de façons de générer une page qui a le contenu que vous décrivez et même avec une bibliothèque décente, vous allez avoir du mal peut-être obtenir 70% d'entre eux. Permettez-moi de décrire brièvement pourquoi il en est aussi mauvais que cela puisse paraître. Il existe des programmes de génération de PDF (je vous regarde, troff) qui se trouvait tout le texte sur une page, puis tout le texte mettre en italique, puis tout le texte en gras. Je vous jure, je ne fais pas cela. Certains programmes veulent mettre le texte en bas de façon très précise, donc si vous êtes chanceux, ils vont utiliser l'opérateur TJ qui expose texte avec crénage spécifique. Si vous n'êtes pas chanceux (ce qui est la plupart du temps), ils sont plutôt jeter le texte avec un ensemble de mouvements avant chaque glyphe unique sur la page. Et si votre texte est mis notre sur une courbe ou une orientation inhabituelle (cartes, annonces)? Qu'en est-il des cas où une personne change subtilement la taille de la police pour une plus grande distinction entre majuscules et minuscules ou simule les petites capitalisations?

Voilà pourquoi, quand je l'ai écrit l'outil texte de recherche pour Acrobat 1.0, il m'a fallu deux mois de sueur pour traiter le plus grand nombre des cas de pointe. Ce n'est pas d'édition de texte -. Il est juste d'essayer de trouver un seul mot ou une phrase

Je ne vais pas recommander une bibliothèque pour vous - excusez-moi - j'ai donné xpdf un bref regard sur et on ne sait pas si oui ou non il a des capacités PDF de génération ou si elle est tout simplement un consommateur de PDF. PDFlib, qui est un produit commercial, semble être de générer des PDF, même si on ne sait pas si elle peut le consommer, mais vous pouvez certainement obtenir les deux côtés en les collant ensemble.

Si c'était moi, je voudrais utiliser les outils que j'ai développé et je serais encore un peu timide de cette tâche. Ma bibliothèque est utilisée par Atalasoft , l'entreprise où je travaille, pour générer des fichiers PDF à partir et tout tissu faire de l'édition dans les un domaine très limité (annotations, métadonnées du document). Le plus dur est que nous faisons de notre mieux pour cacher la complexité du PDF de nos clients. En général, nos clients veulent nous pour comprendre les spécifications au lieu d'eux et de faire le reste facile - mais des tâches comme celui-ci (redaction est un autre), sont vraiment difficile à faire sans comprendre la profondeur du PDF spécification. Si vous commencez à entrer dans le monde des bibliothèques de manipulation de PDF, vous devez commencer par la lecture de la spécification, en particulier le chapitre 8 (Graphics) et le chapitre 9 (texte), et vous aurez une meilleure compréhension de ce que vous allez devoir faire avec la bibliothèque.

Autres conseils

xpdf est une bibliothèque de PDF en lecture seule. Il ne peut pas écrire PDF beaucoup moins modifier le contenu.

Avez-vous regardé iText / ISHarp pour modifier les fichiers PDF?

Bien que pas une bibliothèque dans le sens traditionnel, pdfedit a des capacités d'édition scriptable. Mais il faut l'intervalle QT. PodoFo correspond probablement mieux à vos besoins. Il y a aussi PdfHummus .

Mais méfiez-vous que si vous vous attendez à modifier le texte de PDF généré par les outils hors de votre contrôle, vous aurez probablement face à des problèmes. Le problème est - et @plinth mentionné -. Il y a plusieurs façons de texte généré qui se ressemblent, mais que contextuellement sont très différents les uns des autres

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top