Frage

Ich bin mit iText PDF Rechnungen für eine J2EE-Web-Anwendung zu generieren und enthalten auf der Seite ist ein Bild von einer URL aus der Anforderungs-URL aufgebaut lesen. In den Entwicklungs- und Testumgebungen dies funktioniert gut, aber in der Produktion erhalte ich eine java.io.IOException. Ist kein anerkannter Imageformat

Wenn ich die URL in meinen Browser einfügen dann das korrekte Bild zurückgegeben wird, jedoch wird die Anforderung von http auf https umgeleitet. In meinem Code, wenn ich die Umleitungs-URL hart codieren dann wird das Bild korrekt angezeigt.

So scheint es, dass, wenn das Bild Abrufen mit com.lowagie.text.Image.getInstance (URL), die Umleitungen auf der URL nicht befolgt werden. Wie kann ich ein Bild von einem umgeleiteten URL Ausgabe iText verwenden?

War es hilfreich?

Lösung

Nun,

Wenn Sie ein Bild von einer URL zu können, müssen sie tatsächlich auf das Bild zeigen. Wenn die URL auf eine Webseite, die dann auf eine andere URL umgeleitet (oder der Return-Code von der URL ist eine Umleitung), dann geht es zum Scheitern verurteilt.

Dies ist im Wesentlichen auf die getInstance () Methode zu verstehen, wie den HTTP-Location Protocol verwenden, um eine Datei zu erhalten, aber nicht das HTTP-Protokoll zu verstehen, genug, um ein HTTP-Client zu sein.

Sie könnten nur verwenden, um die ‚https‘ Adresse, oder Sie können das Bild mit Ihrem Programm speichern und suchen die als CFreiner vermuten läßt. Wenn keine dieser Optionen möglich sind, dann Ihre einzige wirkliche Lösung ist Code zu implementieren, um die URL abfragen, ob es sich um eine Umleitung ist und wenn es sich um die Umleitung folgen.

Andere Tipps

Gibt es einen Grund, warum Sie dies über die URL bekommen müssen ?? Haben Sie das Bild passen, dass die URL verweist? Was passiert, wenn sie sich ändert oder wird entfernt?

Ich bin nicht sicher, ob Ihre Anforderung, aber es kann einfacher sein, das Bild von der URL zu speichern und legen Sie es irgendwo in Ihrem Projekt. Dann können Sie es zu Ihrem pdf hinzufügen mit:

Image.getInstance("yourimage.gif");

Wenn Sie mehrere haben leitet Sie nicht url verwenden können. Statt URL, können Sie den Pfad des Bildes in Image.getInstance("path") angeben. Sie können die GIF-Datei in Ihrem Bereitstellungspaket platzieren.

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