I'm pretty sure it's gonna be an easy solution but i can't find any help about my issue. I'm creating a pdf file and at the moment users have to save it before opening it. But i have to open it before the user decides to save it or not. But i can't find how to tell iText to open it in a new tab. What sould i do?
Here is my code, i call this method right after "document.close();" :
public void openPDF(String nomDoc, String nomFichier) throws IOException {
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
HttpServletResponse response = (HttpServletResponse) externalContext
.getResponse();
// File file = new File(getFilePath(), getFileName());
File file = new File(nomFichier);
BufferedInputStream input = null;
BufferedOutputStream output = null;
try {
input = new BufferedInputStream(new FileInputStream(file),
DEFAULT_BUFFER_SIZE);
response.reset();
response.setHeader("Content-Type", "application/pdf");
response.setHeader("Cache-Control",
"must-revalidate, post-check=0, pre-check=0");
response.setHeader("Content-Length", String.valueOf(file.length()));
// response.setHeader("Content-Disposition", "inline; filename=\"" +
// nomFichier + "\"");
response.setHeader("Content-Disposition", "form-data;filename=\""
+ nomDoc + "\"");
output = new BufferedOutputStream(response.getOutputStream(),
DEFAULT_BUFFER_SIZE);
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
int length;
while ((length = input.read(buffer)) > 0) {
output.write(buffer, 0, length);
}
output.flush();
} finally {
close(output);
close(input);
}
facesContext.responseComplete();
}
My command button :
<p:commandButton process="checkboxContrats"
icon="ui-icon-file-pdf" value="Editer les fiches de paie"
action="#{paieAgentView.printPaieAgent()}" update="@form"
escape="false" ajax="false" />
My view :
public void creerPDF(List<FichePaie> listFdP, Date dateDebut, Date dateFin) throws DocumentException,
IOException {
ServletContext servletContext = (ServletContext) FacesContext
.getCurrentInstance().getExternalContext().getContext();
String nomRelatif = servletContext.getRealPath(NOMFICHIER);
Date dtt = new Date();
Phrase para = new Phrase("Date d'édition : " + sdf.format(dtt),
FontFactory.getFont(FontFactory.HELVETICA, 8, Font.NORMAL));
Document document = this.getDocumentPortraitSmallMargin(nomRelatif,
para);
document.open();
document.add(new Chunk(""));
document.close();
openPDF(filename, nomRelatif );
}
Thank you for your help.