2016-06-23 18 views
1

Ich muss in der Lage sein, einen rechteckigen Bereich auf einer PDF-Seite anzugeben und den Text- und Grafikinhalt dieses Bereichs mit PDFBox an einen neuen Ort auf derselben Seite zu verschieben. Alle Grafiken (Linien, Bilder usw.) bewegen sich jeweils als eine ganze Einheit, wenn sie in dem Bereich ausgewählt sind.PDF-Inhalt mit PDFBox verschieben

Die zu ändernden PDF-Dokumente stammen als textbasierte PCL und werden mit einem Drittanbieter-Tool in PDF konvertiert. Ich kann technische Fragen zu diesen Dokumenten bei Bedarf beantworten.

This Stack Overflow question ist genau das, was ich bin, aber diese Frage scheint aufgegeben worden zu sein, bevor eine funktionierende Lösung gefunden wurde?

Ich würde diese Frage bounty wenn ich ein paar mehr Rufpunkte hätte.

Wenn Sie bei irgendeinem Aspekt dieses Problems helfen können, würde ich Ihre Hilfe danken, danke.

+1

Der Grund, warum * diese Frage scheinbar vor einer funktionierenden Lösung * aufgegeben wurde, ist, dass Ihre Aufgabe höchst nicht trivial zu implementieren ist. Jede Zeichnungsanweisung in einer PDF-Datei kann auf ein Rechteck innerhalb oder außerhalb des Rechtecks ​​oder teilweise innerhalb und teilweise außerhalb ausgerichtet sein. Daher müssen Sie möglicherweise für jeden Befehl die Koordinaten ändern, den aktuellen Clip-Pfad usw. bearbeiten (was möglicherweise kompliziert genug ist); oder Sie müssen vielleicht sogar die Anweisungen für Teile innerhalb und Teile außerhalb teilen. Zum Zeichnen einer Linie ist das möglich, aber zum Zeichnen eines Buchstabens? – mkl

+0

Sie scheinen nicht die Komplikation des Teilens der Anweisung zu erfordern, aber bereits das bloße Bewegen kann zur Hölle kompliziert sein. – mkl

+0

Wir verschieben nur komplette Text- oder Grafikeinheiten. Es scheint, als müssten wir einfach die Koordinaten anpassen, die mit einem Text oder Grafikelement verknüpft sind. Es gibt zahlreiche Beispiele in der PDFBox-Quelle zum Ändern von Dokumenten und eine Demo zum Lokalisieren von Text innerhalb eines bestimmten Rechtecks. Wir sollten in der Lage sein, die Textelemente in einem Rechteck zu lokalisieren und ihre Koordinaten zu aktualisieren. Ich würde sogar eine Antwort auf diese Frage akzeptieren, die sich nur mit Text befasste und die Grafik als ein separates Problem für uns übrigließ. – DavesPlanet

Antwort

0

Ich bin nicht so vertraut mit PDFBox, wie ich sein sollte, aber jede Bibliothek sollte in der Lage sein, Folgendes zu tun; Ich kenne den, den ich vertrete.

Erstellen Sie eine neue leere Seite, die die gleiche Größe wie Ihr Original hat. Kopieren Sie den Inhalt des Originals in ein XObject und wenden Sie dieses auf die leere Seite an. Fügen Sie der Seite ein weißes Rechteck hinzu, um das betreffende Rechteck zu verdecken. Clip den Inhalt der ursprünglichen Seite auf das Rechteck, das Sie verschieben möchten. Erstellen Sie ein zweites XObject daraus. Wenden Sie es auf die neue Seite in der von Ihnen gewünschten Position an.

Wenn PDFBox dazu in der Lage ist, Sanitize die neue Seite, um den versteckten Inhalt unter dem weißen Feld zu entfernen.