проблема при создании PDF-файлов с помощью iText 5 - PullRequest
0 голосов
/ 15 сентября 2011

Я пытаюсь сгенерировать pdf-файлы с помощью iText, я хочу, чтобы эти файлы открывались непосредственно в моем браузере Chrome, поэтому вот код моего метода печати:

 public void printFicheProjet()
    {
        Integer id=Integer.valueOf((String)FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id_projet_print"));
        Projets projet=projetsService.getProjets(id);
        FacesContext context = FacesContext.getCurrentInstance();
        try {
            HttpServletResponse hsr = (HttpServletResponse) context.getExternalContext().getResponse();
            hsr.setContentType("application/pdf");
            hsr.setHeader("Content-disposition", "inline; filename=\"enseignants.pdf\"");
            Document pdf = new Document(PageSize.A4, 5, 5, 5, 5);
            pdf.setPageSize(PageSize.A4);
            pdf.addHeader("Banque Centrale Populaire", "Fiche Projet");
            ByteArrayOutputStream os = new ByteArrayOutputStream();
            PdfWriter.getInstance(pdf, os);
            pdf.open();            
            Font font = new Font(Font.FontFamily.TIMES_ROMAN, 12, Font.NORMAL);
            Paragraph p = new Paragraph("", font);
            p = new Paragraph("Informations genereaux du projet", font);
            Font gras = new Font(Font.FontFamily.TIMES_ROMAN, 12, Font.BOLD);
            p.setIndentationLeft(30);
            pdf.add(p);
            pdf.close();
            byte[] data = os.toByteArray();
            hsr.getOutputStream().write(data);
            context.responseComplete();
        } catch (Exception e) {}
    }

проблема заключается в том, когда я выполняю этометод ничего не происходит, нет ошибки, нет файла в браузере, нет окна загрузки ... полностью ничего.может там чего-то не хватает?

Ответы [ 2 ]

1 голос
/ 26 октября 2011

Проблема заключалась в том, что commandbutton должен иметь атрибут ajax="false", и он должен работать нормально. Вместо:

<p:commandButton value="Imprimer Fiche Projet" actionListener="#{projet.printFicheProjet}">
    <f:param name="id_projet_print" value="#{projet.currentChangerStatus.projets.codeProjet}" />
</p:commandButton>

Введите:

<p:commandButton value="Imprimer Fiche Projet" actionListener="#{projet.printFicheProjet}" ajax="false">
    <f:param name="id_projet_print" value="#{projet.currentChangerStatus.projets.codeProjet}" />
</p:commandButton>
1 голос
/ 15 сентября 2011

Попробуйте заменить

  catch (Exception e) {}

с

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

Который должен печатать исключение, выбрасываемое на консоль.

...