0

vaadinでPDFを生成しようとしています。私の問題は、生成されたpdfが現在のウィンドウ(ブラウザタブ)で開くことです。私は試した:

 String filename = contentDataName + ".pdf";
    StreamResource resource = new StreamResource(source, filename, vaadinApplication);
    resource.getStream().setContentType("application/pdf");
    resource.getStream().setFileName(filename);
    resource.getStream().setParameter("Content-Disposition", "attachment; filename=\"" + filename + "\"");
    resource.getStream().setParameter("Content-Length", Integer.toString(fopOutput.size()));
    resource.setCacheTime(5000);
    resource.setMIMEType("application/pdf");

    mainWindow.open(resource);
    mainWindow.open(resource, "_blank", true);

動作しません。私は何が欠けていますか?私も試しました

mainWindow.open(resource, "_blank");
4

3 に答える 3

3

以下は私のための作品です(Vaadin 7)

    ClickListener getHelpButtonListener(final Button helpButton)
{
log.debug("+++++++++ setButtonListener ...++++++++++++++===.........");
final ClickListener helpButtonlistener = new ClickListener()
{
    @Override
    public void buttonClick(ClickEvent event)
    {

    StreamSource source = new StreamSource()
    {
        public java.io.InputStream getStream()
        {
        try
        {
            String helpFilePath = basepath + "/datafiles/";
            File helpFile = new File(helpFilePath);
            FileInputStream helpFileInputStream = new FileInputStream(helpFile);
            return helpFileInputStream;
        } catch (FileNotFoundException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
        }
    };
    String filename = basepath + "/datafiles/help.pdf";
    StreamResource resource = new StreamResource(source, filename);
    resource.setMIMEType("application/pdf");
    resource.getStream().setParameter("Content-Disposition", "attachment; filename=" + filename);
    BrowserWindowOpener opener = new BrowserWindowOpener(resource);
    opener.extend(helpButton);
    }

};
return helpButtonlistener;
}
于 2014-06-23T14:30:24.433 に答える
0

私は私のプロジェクトで同じ仕事をしました.Vaadinのウィンドウ内に「.pdf」を表示している以下の私の関数を見ることができます. (私のプロジェクトのコードの平和のため、オブジェクトと関数の奇妙な命名は無視してください)

private void publishReport(final String path){
    StreamSource s = new StreamSource() {

        public java.io.InputStream getStream() {
            try {
                File f = new File(path);
                FileInputStream fis = new FileInputStream(f);
                return fis;
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }
    };

    StreamSource ss = new StreamSource(){


        @Override
        public InputStream getStream() {
            // TODO Auto-generated method stub
            return null;
        }

    };

    StreamResource r = new StreamResource(s, "appointmentScheduleDate.pdf", app);
    r.setCacheTime(-1);
    Embedded e = new Embedded();
    e.setSizeFull();
    e.setType(Embedded.TYPE_BROWSER);

    r.setMIMEType("application/pdf");

    e.setSource(r);
    e.setHeight("650px");
    plaintReoprtWindow = new Window("Report");
    plaintReoprtWindow.center();
    plaintReoprtWindow.setModal(true);
    plaintReoprtWindow.setHeight("700px");
    plaintReoprtWindow.setWidth("900px");
    plaintReoprtWindow.addComponent(e);
    app.getMainWindow().addWindow(plaintReoprtWindow);
}
于 2013-02-12T14:13:39.110 に答える
0

そのように動作するはずです。たぶんこれが役立つかもしれません: https://vaadin.com/forum/-/message_boards/view_message/1572816 ?

于 2013-02-11T18:12:12.580 に答える