FlyingSaucer renderer.setDocument löst die Ausnahme "Stream geschlossen" aus

8

Ich habe Probleme beim Erstellen einer PDF-Datei mit dem einfachen Beispiel hier . Es ist das erste Mal, dass ich versuche, es zu benutzen, und ich habe ein paar Dinge ausprobiert und viel gesucht, aber keinen Grund gefunden, warum der Fehler erzeugt wird. Der Fehler stammt von der Zeile renderer.setDocument(url); . Wenn jemand irgendwelche Ideen, Vorschläge oder Alternativen hat, würde es sehr geschätzt werden.

%Vor%

Die Konsole druckt den folgenden Fehler aus.

%Vor%     
paben 22.02.2011, 04:45
quelle

5 Antworten

9

renderer.setDocument kann eine "Stream geschlossen" -Ausnahme auslösen, wenn die xhtml auf eine Datei verweist, die der Renderer nicht finden kann, wie etwa eine CSS-Datei.

Die Symptome stimmen nicht exakt mit den Originalplakaten überein, da "XML-Ressource nicht laden" nicht in der Fehlermeldung erscheint, ich nehme dies zum Vorteil derjenigen auf, die über Google hierher kommen.

    
Terry Horner 21.02.2013 11:13
quelle
1

Ich habe dieses Problem einfach durch Ersetzen von

gelöst %Vor%

mit

%Vor%     
bluish 26.09.2011 09:52
quelle
1
%Vor%

Dies ist Code, der gut funktioniert.

Die meisten Leute bekommen das obige Problem @ meinen Code.

%Vor%

Hier müssen wir den relativen Pfad angeben.

    
Praveen 13.02.2013 13:33
quelle
0

Ist "samples / firstdoc.xhtml" die Datei aus dem Tutorial? Ist es im richtigen Verzeichnis und zugänglich? XHTMLRenderer akzeptiert nur sauberen XHTML-Code und ist sehr streng. Wenn etwas nicht stimmt, erhalten Sie eine Ausnahme.

In einigen meiner Projekte verwende ich JTidy , um die Quelle vor dem Rendern zu bereinigen.

    
Chris 22.02.2011 11:09
quelle
0

Was tatsächlich hier passiert, ist, dass der setDocument(...) -Aufruf ausgeführt wird und renderer kein InputStream öffnen kann (normalerweise, weil entweder die Datei nicht existiert oder die Zugriffsrechte nicht ausreichen). Die Lösung wäre, diese Referenz durch eine File oder eine Live-URL zu ersetzen, die die App treffen kann.

    
Chris Cashwell 12.01.2012 15:55
quelle