2011-01-14 11 views
6

Ich habe hier ein bisschen Kopfschütteln gemacht und erbitte deinen Rat.Was ist der beste Ansatz zum Ändern von interaktiven PDF-Formularfeldern auf iOS?

Ich baue eine App, die als Teil ihrer Funktionen ist, PDF-Formulare zu präsentieren; Das bedeutet, dass sie angezeigt werden, dass Felder geändert werden können und speichern Sie die geänderte PDF-Datei wieder. UIWebViews unterstützen keine interaktiven PDF-Formulare.

Mit der CGPDF-API (und profitieren von anderen Fragen hier und anderswo veröffentlicht), kann ich sicherlich die PDF (ohne die Formularfelder/Widgets) präsentieren, scannen und finden Sie die Felder im Dokument, um herauszufinden, wo auf dem Bildschirm etwas zeichnen und interaktiv machen.

Was ich nicht herausfinden kann, ist, wie man die CGPDFDictionary-Objekte ändert und sie wieder in eine Datei schreibt. Man könnte die CGPDF API verwenden, um ein neues PDF-Dokument aus ganzem Stoff zu erstellen, aber wie benutzt man es, um eine existierende Datei zu modifizieren?

Sollte ich woanders suchen wie 3rd Party PDF-Bibliotheken wie PoDoFo oder libHaru?

Ich würde gerne von jemandem hören, der erfolgreich eine PDF-Datei geändert und es auf Ihren Ansatz zurückgeschrieben hat.

+0

Ich habe diese Frage ein paar Mal (mit Kopfgeld) zu keinen Ergebnissen gestellt. Aus einer Menge Forschung und Arbeit in diesem müssen Sie eine Bibliothek schreiben, um es mit C/C++ zu tun. PoDoFo speichert nicht zurück und libHaru öffnet keine vorhandenen PDFs (basierend auf Speicher, könnte rückwärts sein). Ich bin seither von diesem Projekt weggegangen und habe versucht, die Schrecken von CGPDF * API zu vergessen. * schaudern * –

+0

Einverstanden. Sie werden höchstwahrscheinlich selbst rollen müssen. Wenn Sie nicht möchten, dass das Ergebnis bearbeitet werden kann, könnten Sie vielleicht auch eine PDF-Datei von Grund auf neu erstellen (UIGraphicsBeginPDFContextToFile) und Ihre vorhandene PDF-Datei sowie alle zusätzlichen Overlays/Texte, die Sie darin erstellen, rendern. Dies wird jedoch ziemlich langsam und das Ergebnis wäre nicht mehr interaktiv. – omz

Antwort

6

Einmal habe ich das unglaublich billig gemacht, indem ich durch das PDF - ich meine reguläre Ausdrücke - geschaut habe und den Rohtext der PDF-Rohdatendatei dreckig verändert habe.

Es kann in einfachen Situationen perfekt funktionieren, in denen Sie den fraglichen Wert leicht finden können.

Keine Ahnung, was Sie hier tun wollen, aber ein seitlicher Gedanke! Ich hoffe es hilft!

+0

Vielen Dank für Ihre Kommentare. – gbreen

+1

@joe Blow, Könntest du ein bisschen mehr darüber erzählen, wie du das gemacht hast? Kann durch ein Beispielcode usw. sein. Danke –

+0

@joe Blow, das klingt wie eine perfekte Lösung für mich. Können Sie näher erläutern, wie rohe PDF-Daten in objective-c gelesen werden? – AddisDev