Avatar billede fc_kongen Nybegynder
04. juni 2011 - 21:18 Der er 8 kommentarer og
1 løsning

iText som bruges i GWT

Hejsa

Jeg har et lille problem når jeg bruger iText sammen med GWT. Som jeg kan se så bliver pdf dokument helt fint genereret (jeg kan sagtens åbne pdf dokumentet når jeg dobbeltklikker på filen og alt ser fint ud). dog når jeg bruger GWT til at åbne filen brokker den sig over at den ikke kan finde filen. Hvis jeg så lukker programmet og åbner det igen så kan den sagtens åbne filen. Så min tanke er om der er et eller andet i systemet som bruger filen?!?! Håber i kan forklare mig eller se hvad jeg gør galt siden jeg ikke kan åbne pdf dokumentet første gang

Her er et helt basalt eksempel som ikke virker.

public class Stuff implements EntryPoint {

    /**
    * This is the entry point method.
    */
    public void onModuleLoad() {
        final Button button = new Button("Click me");
        final Label label = new Label();

        button.addClickListener(new ClickListener() {
            public void onClick(Widget sender) {
                if (label.getText().equals("")) {
                    StuffService.App.getInstance().getMessage("Hello, World!", new MyAsyncCallback(label));
                } else {
                    label.setText("");
                }
            }
        });

        // Assume that the host HTML has elements defined whose
        // IDs are "slot1", "slot2".  In a real app, you probably would not want
        // to hard-code IDs.  Instead, you could, for example, search for all
        // elements with a particular CSS class and replace them with widgets.
        //
        RootPanel.get("slot1").add(button);
        RootPanel.get("slot2").add(label);
    }

    private static class MyAsyncCallback implements AsyncCallback<String> {
        private Label label;

        public MyAsyncCallback(Label label) {
            this.label = label;
        }

        public void onSuccess(String result) {
            DOM.setInnerHTML(label.getElement(), result);
            Window.open("http://localhost:8888/stuff.Stuff/Faktura/test/test.pdf","_blank","disabled");
        }

        public void onFailure(Throwable throwable) {
            label.setText("Failed to receive answer from server!");
        }
    }
}

public class StuffServiceImpl extends RemoteServiceServlet implements StuffService {
    // Implementation of sample interface method
    public String getMessage(String msg) {
        new TestCreatePDF();
        return "Client said: \"" + msg + "\"<br>Server answered: \"Hi!\"";
    }
}

public class TestCreatePDF {
    public TestCreatePDF() {
        Document document=new Document();
        try {
            PdfWriter.getInstance(document,new FileOutputStream("C:\\Documents and Settings\\Martin\\IdeaProjects\\tester\\src\\test\\nielsson\\stuff\\public\\Faktura\\test\\test.pdf"));
                                                               
            document.open();
            document.add(new Paragraph("Hello Pdf"));
            document.close();
        } catch (DocumentException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        } catch (FileNotFoundException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
    }
}

håber i kan hjælpe.
Avatar billede arne_v Ekspert
05. juni 2011 - 00:48 #1
Det er ikke til at sige med sikkerhed, men jeg vilel proeve at erstatte:

            PdfWriter.getInstance(document,new FileOutputStream("C:\\Documents and Settings\\Martin\\IdeaProjects\\tester\\src\\test\\nielsson\\stuff\\public\\Faktura\\test\\test.pdf"));
                                                             
            document.open();
            document.add(new Paragraph("Hello Pdf"));
            document.close();

med:
         
            OutputStream os = new FileOutputStream("C:\\Documents and Settings\\Martin\\IdeaProjects\\tester\\src\\test\\nielsson\\stuff\\public\\Faktura\\test\\test.pdf");
            PdfWriter.getInstance(document, os);
                                                             
            document.open();
            document.add(new Paragraph("Hello Pdf"));
            document.close();
            os.close();
Avatar billede arne_v Ekspert
05. juni 2011 - 00:48 #2
PS: Hvordor har du ikke lagt spoergsmaalet under Java?
Avatar billede fc_kongen Nybegynder
05. juni 2011 - 09:19 #3
Synes eller jeg lage den under programmering og så andre.

Men jeg får desværre stadig samme fejl.

Resource not found: Faktura/test/test.pdf; (could a file be missing from the public path or a <servlet> tag misconfigured in module stuff.Stuff.gwt.xml ?).

Kan stadig se at filen bliver oprettet men af en eller anden årsag kan jeg ikke åbne filen med det samme. Skal stadig lukke programmet først før jeg kan åbne den via programmet
Avatar billede arne_v Ekspert
05. juni 2011 - 16:45 #4
Ja - du lagde den under "Andre" - mit forslag var at havde lagt den under "Java".
Avatar billede arne_v Ekspert
05. juni 2011 - 16:48 #5
Hvis ikke det er fordi at filen er aaben, saa kan det vaere noget cache.

Kunne du proeve i.s.f. at give URL til PDF saa at have URL til en servlet som streamer PDF ud?

(saa kunne PDF ogsaa ligge i et dur udenfor web app, hvilket maaske var et bedre design)
Avatar billede fc_kongen Nybegynder
05. juni 2011 - 19:53 #6
Ja den løsning er jeg også kommet frem til :) har også lavet det på den måde nu og her virker det fint. Men synes stadig det er underligt at den ikke kan åbne filen med det samme. Hvis jeg går ud og sletter filen lige efter den er lavet så kan jeg også det uden problemer hvilket burde betyde at filen ikke bliver brugt eller er åben.
Avatar billede arne_v Ekspert
06. juni 2011 - 04:05 #7
Tomcat maa jo cache hvad der ligger i web app dir.

Mn det er slet ikke paent at forsoege at skrive til et dir som er en del af web app.
Avatar billede fc_kongen Nybegynder
06. juni 2011 - 13:54 #8
Ja det kunne jo være en forklaring på hvorfor programmet ikke ser filen første gang. Hvis tomcat cacher giver det meget god mening hvorfor den først ser filen når jeg river programmet ned.

Ja ved godt det ikke var den pæneste løsning. skulle også bare bruge det til et POC. Men tak for hjælpen nu kom der en forklaring på mysteriet.

Smider du et svar så kan du få pointsne
Avatar billede arne_v Ekspert
06. juni 2011 - 14:42 #9
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester