Frage

Ich mag fragen, ob es möglich ist, zu bearbeiten PDF-Dateien mit der xpdf Bibliothek, und wenn ja, wie? Ich denke, das ist möglich, aber ich konnte keine Tutorial noch Dokumentation für xpdf finden, so dass ich wirklich keine Ahnung haben :(. Ich bin auch offen eine andere Bibliothek für die Verwendung, wenn eine andere Träger für pdf bearbeiten. Meine einzige Voraussetzung für eine solche Bibliothek ist, dass es ein C ++ Bibliothek oder zumindest ein C sein, ein und hat Cross-Plattform (Windows und Linux) sein

Ich brauche nur grundlegende Bearbeitung von PDF-Datei zum Beispiel:

  

"Dies ist ein Text in einem PDF-Dokument" geändert werden würde: "Dies ist ein text im PDF" mit einem anderen Textfarbe auch.

Vielen Dank für Ihre Antworten!

War es hilfreich?

Lösung

Nur so verstehen Sie den Umfang dessen, was Sie sich einlassen, „grundlegende Bearbeitung“ von PDF-Inhalten ist fast immer nicht trivial.

Seiteninhalt in PDF wird durch kurze RPN Programme dargestellt, die auf der Seite malen. Es ist eine kleine Sprache ähnlich wie Postscript in der Semantik, aber ohne Strukturen oder Funktionsdefinitionen Looping (so gibt es kein Halteproblem). In einer gesunden Welt, Ihr Text auf der Seite wird durch etwas wie folgt dargestellt werden:

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

die, wenn sie übersetzt in etwas mehr vertraut, ist dies:

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

Also in diesem Fall, Sie haben dies in so etwas zu verwandeln:

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();

was würde:

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

in der entsprechenden PDF. Das Problem ist, viele Ziele verfolgt:

  1. Sie haben die Seite zu extrahieren und alle seine Ressourcen (nicht-triviale)
  2. Sie haben eine neue Seite zu erzeugen, das Einfügen neuer Ressourcen (Sie das Hinzufügen einer neuen Schriftart), das Einbetten der Schrift, wenn zulässige
  3. Alter der Content-Stream auf der Seite Ihren geändertenen Inhalt aufzunehmen.

Und 3 ist, wohin du gehst zu bekommen aufgehängt, weil es unendlich viele Möglichkeiten, um eine Seite zu erstellen, die den Inhalt haben Sie beschreiben, und auch mit einer guten Bibliothek, Sie gehen eine harte Zeit haben, vielleicht 70% von ihnen zu bekommen. Lassen Sie uns kurz beschreiben, warum das so schlecht ist, wie es klingt. Es gibt PDF-Generierung Programme (ich dich suchen, troff), die alle auf die Ebene Text auf einer Seite legen Sie zuerst, dann legen alle kursiven Text, dann sind alle fett gedruckten Text. Ich schwöre, ich bin das nicht aus. Einige Programme wollen Text festgelegt werden sehr genau, also, wenn Sie Glück haben, werden sie die TJ-Operator verwenden, die Text mit bestimmten Kerning legt. Wenn Sie nicht glücklich sind (was die meiste Zeit ist), werden sie stattdessen den Text mit einem Satz bewegt sich vor jedem einzelnen Glyphen auf der Seite legen. Und was, wenn Ihr Text unsere auf einer Kurve gelegt wird, oder eine ungewöhnliche Orientierung (Karten, Anzeigen)? Was ist mit den Fällen, in denen jemand auf subtile Weise die Schriftgröße für eine größere Unterscheidung zwischen Groß- und Kleinschreibung ändert oder simuliert Kapitälchen?

Aus diesem Grund, wenn ich den Fund Text-Tool für Acrobat 1.0 geschrieben, es hat mich von zwei Monaten nach Schweiß Griff als viele der Grenzfälle. Dies ist nicht die Textbearbeitung -. Es versucht nur, ein einziges Wort oder eine Phrase zu finden

Ich werde nicht eine Bibliothek für Sie empfehlen - sorry - ich gab xpdf einen kurzen Blick über und es ist nicht klar, ob es sich PDF-Generierung Fähigkeiten hat oder wenn es einfach ein Verbraucher von PDF ist. PDFlib, die ein kommerzielles Produkt ist, erscheint PDF zu erzeugen, zu sein, obwohl es nicht klar, ob es mich verbrauchen kann, aber man könnte sicherlich beiden Seiten erhalten, indem sie zusammen geklebt wird.

Wenn es nach mir ginge, würde ich Tools verwenden, die ich entwickelt habe, und ich würde immer noch ein wenig von dieser Aufgabe zurückschrecken sein. Meine Bibliothek verwendet wird von Atalasoft , die Firma, die ich Arbeit für, PDFs aus ganzem Stoffe zu erzeugen und bearbeiten zu tun innerhalb eine sehr begrenzte Domäne (Anmerkungen, Dokument-Metadaten). Der schwierigste Teil ist, dass wir unser Bestes tun, um die Komplexität von PDF unseren Kunden zu verstecken. In der Regel wollen, dass unsere Kunden uns die Spezifikation, anstatt sie zu verstehen und den Rest einfach machen - aber Aufgaben wie diese (Schwärzung ist ein anderer), sind wirklich schwer, ohne zu verstehen, die Tiefe des PDF zu tun Spezifikation. Wenn Sie die Bibliothek Welt des PDF Manipulation beginnen Eingabe, sollten Sie mit dem Lesen der Spezifikation, insbesondere Kapitel 8 (Graphics) und Kapitel 9 (Text) beginnen, und Sie werden ein besseres Verständnis von dem, was Sie gehen zu müssen, tun mit der Bibliothek.

Andere Tipps

xpdf ist eine schreibgeschützte PDF-Bibliothek. Es kann nicht schreiben PDF viel weniger ändern Inhalt.

Haben Sie bei Itext / ISHarp zum Bearbeiten von PDF-Dateien geschaut?

Obwohl keine Bibliothek im traditionellen Sinn, PDFedit skriptBearbeitungsFunktionen hat. Aber es erfordert QT. PodoFo wahrscheinlich auf Ihre Anforderungen am besten entspricht. Es gibt auch PdfHummus .

Aber passen Sie auf, wenn Sie zu bearbeiten Text aus PDF generiert von Werkzeugen außerhalb Ihrer Kontrolle erwarten, werden Sie wahrscheinlich einige Probleme stellen. Das Problem ist - und @plinth erwähnte es -. Es gibt viele Möglichkeiten, um generierten Text, die ähnlich aussehen würde, aber das ist die kontextuell sehr verschieden voneinander

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top