2016-06-23 13 views
2

Ich versuche eine PDF-Datei zu laden, die ein Bild enthält (um genauer zu sein, generiert mein Java-Code die PDF-Datei durch Drucken von einigen Text und ein Bild dazu (das Bild ist ein QR-Code Bild, das von einem anderen Teil des Codes generiert wird) in meiner Webanwendung. Wenn ich mein Programm in Eclipse als "Run on Server" starte, gibt es keinen Fehler und ich kann die PDF-Datei auf meinem lokalen Host mit chrome sehen. Wenn ich jedoch eine WAR-Datei aus meinem Projekt erstelle, um mein Projekt lokal bereitzustellen und zu versuchen, die PDF-Seite in Chrome zu durchsuchen, erhalte ich den Fehler "java.lang.IllegalArgumentException at com.itextpdf.text.pdf.PdfGraphics2D.drawImage". Ich habe den Teil auskommentiert, der das Bild in der PDF-Datei in meinem Java-Code druckt und die WAR-Datei neu generiert. Jetzt kann ich die PDF-Datei aber natürlich ohne das Bild sehen. Ich sollte sagen, dass ich keine Probleme mit anderen Seiten meiner Anwendung habe. Würde mir bitte jemand helfen, wie ich dieses Problem lösen kann. Jede Information wird sehr geschätzt.java.lang.IllegalArgumentException at com.itextpdf.text.pdf.PdfGraphics2D.drawImage

Update 1:
Hier ist der vollständige Stack-Trace

SEVERE: Exception or error caught in server resource 
org.restlet.resource.ResourceException: Internal Server Error (500) - The server 
encountered an unexpected condition which prevented it from fulfilling the requ 
est 
     at org.restlet.resource.ServerResource.doHandle(ServerResource.java:539) 

     at org.restlet.resource.ServerResource.get(ServerResource.java:742) 
     at org.restlet.resource.ServerResource.doHandle(ServerResource.java:617) 

     at org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource 
.java:678) 
     at org.restlet.resource.ServerResource.doConditionalHandle(ServerResourc 
e.java:356) 
     at org.restlet.resource.ServerResource.handle(ServerResource.java:1043) 
     at org.restlet.resource.Finder.handle(Finder.java:236) 
     at org.restlet.routing.Filter.doHandle(Filter.java:150) 
     at org.restlet.routing.Filter.handle(Filter.java:197) 
     at org.restlet.routing.Router.doHandle(Router.java:422) 
     at org.restlet.routing.Router.handle(Router.java:639) 
     at org.restlet.routing.Filter.doHandle(Filter.java:150) 
     at org.restlet.routing.Filter.handle(Filter.java:197) 
     at org.restlet.routing.Filter.doHandle(Filter.java:150) 
     at org.restlet.routing.Filter.handle(Filter.java:197) 
     at org.restlet.routing.Filter.doHandle(Filter.java:150) 
     at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.jav 
a:140) 
     at org.restlet.routing.Filter.handle(Filter.java:197) 
     at org.restlet.routing.Filter.doHandle(Filter.java:150) 
     at org.restlet.routing.Filter.handle(Filter.java:197) 
     at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:202) 
     at org.restlet.engine.application.ApplicationHelper.handle(ApplicationHe 
lper.java:77) 
     at org.restlet.Application.handle(Application.java:385) 
     at org.restlet.routing.Filter.doHandle(Filter.java:150) 
     at org.restlet.routing.Filter.handle(Filter.java:197) 
     at org.restlet.routing.Router.doHandle(Router.java:422) 
     at org.restlet.routing.Router.handle(Router.java:639) 
     at org.restlet.routing.Filter.doHandle(Filter.java:150) 
     at org.restlet.routing.Filter.handle(Filter.java:197) 
     at org.restlet.routing.Router.doHandle(Router.java:422) 
     at org.restlet.routing.Router.handle(Router.java:639) 
     at org.restlet.routing.Filter.doHandle(Filter.java:150) 
     at org.restlet.routing.Filter.handle(Filter.java:197) 
     at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:202) 
     at org.restlet.Component.handle(Component.java:408) 
     at org.restlet.Server.handle(Server.java:507) 
     at org.restlet.engine.connector.ServerHelper.handle(ServerHelper.java:63 
) 
     at org.restlet.engine.adapter.HttpServerHelper.handle(HttpServerHelper.j 
ava:143) 
     at org.restlet.ext.servlet.ServerServlet.service(ServerServlet.java:1117 
) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl 
icationFilterChain.java:303) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF 
ilterChain.java:208) 
     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52 
) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl 
icationFilterChain.java:241) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF 
ilterChain.java:208) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV 
alve.java:220) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV 
alve.java:122) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica 
torBase.java:505) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j 
ava:169) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j 
ava:103) 
     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java: 
956) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal 
ve.java:116) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav 
a:436) 
     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp 
11Processor.java:1078) 
     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(
AbstractProtocol.java:625) 
     at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpo 
int.java:2517) 
     at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoin 
t.java:2506) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. 
java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor 
.java:617) 
     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskTh 
read.java:61) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.IllegalArgumentException 
     at com.itextpdf.text.pdf.PdfGraphics2D.drawImage(PdfGraphics2D.java:1606 
) 
     at com.itextpdf.text.pdf.PdfGraphics2D.drawImage(PdfGraphics2D.java:1340 
) 
     at com.itextpdf.text.pdf.PdfGraphics2D.drawImage(PdfGraphics2D.java:1327 
) 
     at com.itextpdf.text.pdf.PdfGraphics2D.drawImage(PdfGraphics2D.java:1310 
) 
     at com.itextpdf.text.Image.getInstance(Image.java:838) 
     at org.safetycode.msc3.resources.PocketCardServerResource.addCodeImage(P 
ocketCardServerResource.java:159) 
     at org.safetycode.msc3.resources.PocketCardServerResource.printCodeImage 
(PocketCardServerResource.java:155) 
     at org.safetycode.msc3.resources.PocketCardServerResource.getPdf(PocketC 
ardServerResource.java:146) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. 
java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.restlet.resource.ServerResource.doHandle(ServerResource.java:523) 

     ... 60 more 
+0

Die vollständige Stack-Trace würde helfen. – Compass

+0

@Compass Vielen Dank für Ihren Kommentar. Ich habe gerade den Beitrag mit dem vollständigen Stack-Trace aktualisiert. – Rane

+0

Die Quelle gefunden: http://grepcode.com/file/repo1.maven.org/maven2/com.itextpdf/itextpdf/5.1.3/com/itextpdf/text/pdf/ PdfGraphics2D.java # PdfGraphics2D.drawImage% 28java.awt.Image% 2Cint% 2Cint% 2Cjava.awt.Color% 2Cjava.awt.image.ImageObserver% 29 Wenn Sie zurückgehen, sieht es so aus, als könnten Sie ein bisschen mehr Informationen herausholen. Die Ausnahme liegt in Zeile 1340. Ich bin in diesen Tagen nicht zu 100% mit itext vertraut, aber überprüfe, ob die Erstellung deiner Image-Instanz 100% gültige Argumente hat. Ansonsten scheint es keine überprüften Ausnahmen zu geben. – Compass

Antwort

0

ich die Lösung für mein Problem gefunden:

  1. ich andere Versionen des itextpdf versuchte
  2. Als Ergebnis wurde die Fehlermeldung in "javax.imageio.IIOException: Cache-Datei kann nicht erstellt werden!"
  3. In der Tomcat-Protokolldatei wurde folgende Meldung angezeigt: "Verursacht von: java.nio.file.NoSuchFileException: C: \ Programme \ Tomcat \ apache-tomcat-7.0.69-windows-x64 \ apache-tomcat -7.0.69 \ temp \ imageio2971026406080838335.tmp "
  4. Ich habe einen Ordner namens" temp "im oben genannten Pfad erstellt und die Seite neu geladen.

Ich denke, wenn ich Eclipse verwendet, um mein Programm zu laufen, erzeugte solche temporäre Datei irgendwo ohne irgendein Problem. Aber mit der WAR-Datei hatte Tomcat keine Berechtigung, die "Temp" -Datei zu erstellen.