2010-06-03 17 views
1

J'essaie de générer des fichiers PDF dans un projet hébergé sur GAE.Générer un PDF avec une image sur Google App Engine sur JAVA

Pour l'instant, j'utilise iText et ça fonctionne très bien pour créer du texte seulement PDF.

J'ai vraiment besoin d'ajouter des images sur mon pdf. Et quand je tente avec iText j'attraper quelques Execption parler de AWT et la liste blanche google:

Uncaught exception from servlet 
java.lang.NoClassDefFoundError: java.awt.color.ICC_Profile is a restricted class. Please see the Google App Engine developer's guide for more details. 
    at com.google.apphosting.runtime.security.shared.stub.java.awt.color.ICC_Profile.<clinit>(ICC_Profile.java) 
    at com.lowagie.text.pdf.codec.PngImage.readPng(Unknown Source) 
    at com.lowagie.text.pdf.codec.PngImage.getImage(Unknown Source) 
    at com.lowagie.text.pdf.codec.PngImage.getImage(Unknown Source) 
    at com.lowagie.text.pdf.codec.PngImage.getImage(Unknown Source) 
    at com.lowagie.text.Image.getInstance(Unknown Source) 
    at com.dooapp.jwsPlateforme.services.licence.PdfPrinterImpl.print(PdfPrinterImpl.java:19) 
    at $PdfPrinter_128f4d9a1bb.print($PdfPrinter_128f4d9a1bb.java) 
    at com.dooapp.jwsPlateforme.servlet.PdfServlet.doGet(PdfServlet.java:36) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:693) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:806) 
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
    at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:129) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:97) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:35) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:238) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at org.mortbay.jetty.Server.handle(Server.java:326) 
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) 
    at com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:76) 
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
    at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:135) 
    at com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:250) 
    at com.google.apphosting.base.RuntimePb$EvaluationRuntime$6.handleBlockingRequest(RuntimePb.java:5838) 
    at com.google.apphosting.base.RuntimePb$EvaluationRuntime$6.handleBlockingRequest(RuntimePb.java:5836) 
    at com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest(BlockingApplicationHandler.java:24) 
    at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:398) 
    at com.google.net.rpc.impl.Server$2.run(Server.java:852) 
    at com.google.tracing.LocalTraceSpanRunnable.run(LocalTraceSpanRunnable.java:56) 
    at com.google.tracing.LocalTraceSpanBuilder.internalContinueSpan(LocalTraceSpanBuilder.java:576) 
    at com.google.net.rpc.impl.Server.startRpc(Server.java:807) 
    at com.google.net.rpc.impl.Server.processRequest(Server.java:369) 
    at com.google.net.rpc.impl.ServerConnection.messageReceived(ServerConnection.java:442) 
    at com.google.net.rpc.impl.RpcConnection.parseMessages(RpcConnection.java:319) 
    at com.google.net.rpc.impl.RpcConnection.dataReceived(RpcConnection.java:290) 
    at com.google.net.async.Connection.handleReadEvent(Connection.java:474) 
    at com.google.net.async.EventDispatcher.processNetworkEvents(EventDispatcher.java:831) 
    at com.google.net.async.EventDispatcher.internalLoop(EventDispatcher.java:207) 
    at com.google.net.async.EventDispatcher.loop(EventDispatcher.java:103) 
    at com.google.net.rpc.RpcService.runUntilServerShutdown(RpcService.java:251) 
    at com.google.apphosting.runtime.JavaRuntime$RpcRunnable.run(JavaRuntime.java:413) 
    at java.lang.Thread.run(Unknown Source) 

Savez-vous s'il y a une bibliothèque qui permet d'ajouter l'image au format PDF sur GAE?

Note: J'essaie iText-Gae mais obtenir la même exception

Remercions
+0

Regardez http://stackoverflow.com/questions/1765238/java-pdf-library-that-works-on-gae –

Répondre

0

Je l'ai suggéré vous de lancer votre machine virtuelle Java en mode sans tête, mais bien sur GAE, il est sans intérêt. Quoi qu'il en soit, étant donné qu'iText a ces problèmes, il semble qu'au moins un projet - nommé de manière appropriée iText-gae - essaye de faire face à ces problèmes. Il semble même qu'une version corrigée peut être downloaded from the web. Mais attention, utilisez-le à vos risques et périls!

+0

Merci pour cette réponse. En fait, j'ai essayé iText-gae. Il ne semble pas fonctionner :( – Christophe

+0

Pouvez-vous mettre à jour votre question avec cette information, et les traces de la pile signifiant? Merci – Riduidel

0

Vous devez utiliser la bibliothèque d'images incluse dans iText, par exemple, dans cet extrait j'insère une image dans une cellule.

import com.lowagie.text.Image; 
    import com.lowagie.text.pdf.PdfPCell; 

    Image img = Image.getInstance("/YOUR IMAGE ROUTE/"); 
    PdfPCell uno = new PdfPCell(img, true); 

Je sais que cette question a des âges mais peut-être aidera quelqu'un dans le futur.