Génération de PDF à l'aide de la bibliothèque iText dans Struts 2 : type de résultat flux ne fonctionne pas

Mon exigence est de générer un fichier PDF à l'aide de la bibliothèque iText, j'utilise le code ci-dessous pour créer un exemple de fichier PDF

Document document = new Document();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfWriter.getInstance(document, baos);
document.open();
document.add(new Paragraph("success PDF FROM STRUTS"));
document.close();
ServletOutputStream outputStream = response.getOutputStream() ;
baos.writeTo(outputStream);
response.setHeader("Content-Disposition", "attachment; filename=\"stuReport.pdf\"");
response.setContentType("application/pdf");
outputStream.flush();
outputStream.close();

Si vous le voyez dans le code ci-dessus, iText n'est pas à l'aide de tout inputStream paramètre, c'est plutôt l'écriture directe sur la réponse de l'outputstream. Alors que struts 2 est en nous mandatant pour l'utilisation InputStream paramètre (voir la configuration ci-dessous)

<action name="exportReport" class="com.export.ExportReportAction">
    <result name="pdf" type="stream">
        <param name="inputName">inputStream</param>
        <param name="contentType">application/pdf</param>
        <param name="contentDisposition">attachment;filename="sample.pdf"</param>
        <param name="bufferSize">1024</param>
    </result>
</action>

Je sais que ma classe devrait avoir des getters et setters pour inputStream et je n'ai que trop dans la classe mentionnée dans struts configuration

private InputStream inputStream;
public InputStream getInputStream() {
    return inputStream;
}

public void setInputStream(InputStream inputStream) {
    this.inputStream = inputStream;
}

Mais depuis iText n'a pas vraiment besoin inputstream plutôt il est écrit directement à la réponse de l'outputstream, je reçois des exceptions puisque ne suis pas le réglage de quoi que ce soit pour l'inputStream paramètre.

S'il vous plaît laissez-moi savoir comment utiliser la bibliothèque iText code dans struts 2 ayant la resultType stream

Grâce

êtes-vous d'obtenir illégale de l'état d'exception ??
Oui chaitanya.. vous avez raison . Je reçois illégale de l'état d'exception, me demandant de vérifier <param name="inputName">
j'ai supprimé ma réponse. semble que j'avais tort. comme l'a dit je ne suis pas familier avec struts
Vous pouvez créer l'inputstream à partir du flux de sortie: setInputStream(new ByteArrayInputStream(baos.toByteArray()));
Cliquez ici et ici pour les solutions à l'aide de Dave Newton suggestion.

OriginalL'auteur Arun | 2012-09-04