NOTA : la version utilisée dans cette première version est la iText5 une prochaine version utilisera la nouvelle version iText7
En premier lieu il faut récupérer les bibliothèques jar suivantes:
- itextpdf-5.5.13.3.jar
- log4j-1.2.16.jar
- slf4j-api-1.7.9.jar
- slf4j-log4j12-1.7.13.jar
Placer ces fichiers dans le dossier WebContent/WEB-INF/lib de votre application Dynamic Web Application , les sélectionner et faire click droit > Build Path > Add to Build Path

Vous pouvez maintenant coder une simple JSP pour générer un ficheir PDF. Attention, si vous cette erreur « getOutputStream() has already been called for this response » il faut retirer tout espace ou retour chariot qui pourrait être interprétés par la JSP comme du HTML à envoyer donc tout se trouve sur une seule ligne pour les tag JSP de type <%@page import %>:
<%@ page language="java" contentType="application/pdf; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%><%@page import="com.itextpdf.text.Document" %><%@page import="com.itextpdf.text.PageSize" %><%@page import="com.itextpdf.text.Paragraph" %><%@page import="com.itextpdf.text.pdf.PdfWriter" %><%
Document document = new Document(PageSize.A4, 36, 36, 36, 72);
PdfWriter writer = PdfWriter.getInstance(document, response.getOutputStream());
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline; filename=\"todo.pdf\"");
document.open();
document.add( new Paragraph ("Hello world"));
document.add( new Paragraph ("Bonjour le monde"));
document.close();
writer.close();
%>
Version iText7
Pour la version iText7, après avoir ajouté les bilbiothèques suivantes en remplacement de celles de iText5:
- barcodes-7.2.1.jar
- commons-7.2.1.jar
- font-asian-7.2.1.jar
- forms-7.2.1.jar
- hyph-7.2.1.jar
- io-7.2.1.jar
- kernel-7.2.1.jar
- layout-7.2.1.jar
- log4j-1.2.16.jar
- pdfa-7.2.1.jar
- pdftest-7.2.1.jar
- sign-7.2.1.jar
- slf4j-api-1.7.9.jar
- slf4j-log4j12-1.7.13.jar
- styled-xml-parser-7.2.1.jar
- svg-7.2.1.jar
Du coup le code pour la JSP est similaire avec l’utilisation d’un ByteArrayOutputStream pour gérer le PDF en mémoire.
<%@ page language="java" contentType="application/pdf; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><%@ page import="com.itextpdf.io.source.ByteArrayOutputStream" %><%@ page import="com.itextpdf.kernel.pdf.PdfDocument" %><%@ page import="com.itextpdf.kernel.pdf.PdfWriter" %><%@ page import="com.itextpdf.layout.Document" %><%@ page import="com.itextpdf.layout.element.Paragraph" %><%
ByteArrayOutputStream memory = new ByteArrayOutputStream();
Document document = new Document(new PdfDocument(new PdfWriter(memory)));
document.add( new Paragraph ("Hello world"));
document.close();
ServletOutputStream servletOutputStream = response.getOutputStream();
servletOutputStream.write(memory.toByteArray());
servletOutputStream.flush();
servletOutputStream.close();
%>