Comment montrer java (jsf) générés directement le fichier pdf dans adobe reader

je suis en utilisant JSF 2.0 (Eclipse IDE) et j'ai une méthode dans un de mes haricots qui génère des fichiers PDF à l'aide d'Apache FOP 1.0. Lorsque je clique sur "makePDF" bouton sur ma page JSF, PDF généré s'ouvre dans la MÊME fenêtre de ma page (et je dois utiliser le bouton "retour" après que j'ai vue/enregistrer/imprimer PDF).

Je peux le modifier de manière à ce que lorsque "makePDF" bouton est enfoncé, pop-out boîte de dialogue s'affiche et me demande si je veux enregistrer le fichier ou l'ouvrir avec adobe reader.

Est-il possible que, lorsque je clique sur mon "makePDF" bouton, PDF généré est directement ouvert dans adobe reader (et j'ai encore ma page JSF et n'ont pas besoin de confirmer quoi que ce soit) ??? Aussi (ce n'est pas vraiment nécessaire, mais bon à savoir), il est un moyen pour l'ouvrir dans une nouvelle fenêtre ou l'envoyer directement à l'imprimante?

Ici est la partie principale de mon code (j'ai supprimé quelque chose sans pertinence) :

public void makePDF(long contractId, int documentType) {

    FacesContext facesContext = FacesContext.getCurrentInstance();
    ExternalContext externalContext = facesContext.getExternalContext();
    String basePath = externalContext.getRealPath("/");

    try {
        fopFactory.setUserConfig(new File(basePath + "/pdf_transform/config/userconfig.xml"));
        fopFactory.setBaseURL(basePath);
        fopFactory.getFontManager().setFontBaseURL(basePath);
    } catch (Exception e) {
        e.printStackTrace();
    } 
    FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
    foUserAgent.setBaseURL(fopFactory.getBaseURL());

    HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
    response.reset();
    response.setHeader("Content-Type", "application/pdf");
    response.setHeader("Content-disposition", "attachment");
    BufferedOutputStream output = null;

    try {
        output = new BufferedOutputStream(response.getOutputStream(), 10240);
        Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, output);

        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer(new StreamSource(xsltfile));

        Source src = new DOMSource(makeXML(contract)); //my method
        Result res = new SAXResult(fop.getDefaultHandler());

        transformer.transform(src, res);

    } catch (Exception e) {
        e.printStackTrace();
    } 

    facesContext.responseComplete();
}`

Quand j'enlève response.setHeader("Content-disposition", "attachment"); il s'ouvre dans la même fenêtre, sinon il me demande de l'enregistrer ou l'ouvrir.

Merci d'avance.

InformationsquelleAutor Nikola | 2010-12-10