APIs d'export en PDF

Exemples de création de documents

Création d'un document en 5 étapes

La création d'un document PDF avec l'API iText peut s'effectuer en 5 étapes. Voici le détail de chacune d'entre elles.

L'objet Document sert à contenir l'ensemble des informations que l'on veut inscrire dans notre fichier PDF. Sur cet objet, on pourra définir la taille ainsi que l'orientation de notre document. Toutes les meta informations seront ajoutées sur cet objet.
La création d'un writer permet de définir la nature de notre document. En effet, l'API iText permet de créer des documents HTML, PDF et XML.
Afin de pouvoir insérer des informations dans notre document, il faut avant tout l'ouvrir. Si l'on insert des objets dans notre document alors que celui-ci n'est pas ouvert, une exception est générée.
Les objets pouvant être insérés dans notre document sont présentées ici.
Une fois que la création du document est terminée, il ne reste plus qu'à appliquer la méthode "close" sur l'objet document.

Voici ce à quoi pourrait ressembler notre programme JAVA:

package contents;

import java.awt.*;
import java.io.*;
import com.lowagie.text.*;
import com.lowagie.text.pdf.*;


public class HelloWorld {

	private final static String out = "contents2.pdf";
	
	public static void main(String[] args) {

	// etape 1
	Document document = new Document(PageSize.A4);
        
	try {
            // etape 2:
            // creation du writer -> PDF ou HTML 
            PdfWriter.getInstance(document, new FileOutputStream(out));
                      	
            // etape 3: Ouverture du document
            document.open();
           
            // etape 4: Ajout du contenu au document
            document.add(new Phrase("Hello World"));
           
        }
        catch(DocumentException de) {
            System.err.println(de.getMessage());
        }
        catch(IOException ioe) {
            System.err.println(ioe.getMessage());
        }
        // etape 5: Fermeture du document
        document.close();
        System.out.println("Document '"+out+"' generated");
	}
}


Le fichier contents.pdf généré contient le texte "Hello World"

Création d'un emploi du temps

Une des fonctionnalités de notre application de gestion des emplois du temps est de générer un emploi du temps dans un format portable. L'exemple ci dessous montre la simplicité avec laquelle il est possible de générer un emploi du temps avec l'API iText.


package edt;

import com.lowagie.text.*;
import com.lowagie.text.pdf.*;
import java.io.*;
import Utilz.*;

public class EmploiDuTemps {
	
	private static int TP = 1;
	private static int CM = 2;
	private static final String out = "EDT.pdf";

	public static void main(String[] args) {
		 
	        // etape 1: creation du document
	        Document document = new Document(PageSize.A4.rotate());
	        try {
	            // etape 2:
	            // creation du writer -> PDF ou HTML 
	            PdfWriter.getInstance(document, new FileOutputStream(out));
	            // etape 3: ouverture du document
	            document.open();
	            
	            // etape 4: Creation d'un tableau  
	            Table table = Utilz.createTable(13);	            
          
	            
	            table.addCell("8h30\n-\n10h30");
	            
	            /*Lundi matin*/
	            Cell cellule = Utilz.ajoutEnseignement("MSI","S.Grebert","2051",CM,4);
				table.addCell(cellule);
	            
	            /*Mardi matin*/
				cellule = Utilz.ajoutEnseignement(" ","","",CM,2);
				table.addCell(cellule);
	            
	            /*Mercredi Matin*/
				cellule = Utilz.ajoutEnseignement("Sécurite des reseaux","S.Lelong","2032",CM,4);
	            table.addCell(cellule);
	            
	            /*jeudi matin*/
	            cellule = Utilz.ajoutEnseignement("Systeme","D.Revuz","2032",CM,4);
	            table.addCell(cellule);
	            
	            /*Vendredi matin*/
	            cellule = Utilz.ajoutEnseignement("TP Sécurité des réseaux","1A","2051",TP,4);
	            table.addCell(cellule);
	            cellule = Utilz.ajoutEnseignement("TP Sécurité des réseaux","2A","2037",TP,4);
	            table.addCell(cellule);
	            
	            table.addCell("10h45\n-\n12h45");
	            
	            /*Mardi matin*/
	            cellule = Utilz.ajoutEnseignement("TD J2EE","Y.Mourier","2034",CM,2);
	            table.addCell(cellule);
	            
	            
	            Cell cell = new Cell("Dejeuner");
	            cell.setHorizontalAlignment(Cell.ALIGN_CENTER);
	            cell.setColspan(11);
	            cell.setHorizontalAlignment(Cell.ALIGN_CENTER);
	            cell.setVerticalAlignment(Cell.ALIGN_CENTER);
	            table.addCell(cell);
	            
	            table.addCell("13h45\n-\n15h45");
	            
	            //Lundi apres midi
	            cellule = Utilz.ajoutEnseignement("TD MSI","S.Grebert","2051",CM,2);
	            table.addCell(cellule);
	            
	            
	            //Mardi apres midi
	            cellule = Utilz.ajoutEnseignement("Admin BDD","JF Barbé","2051",CM,4);
	            table.addCell(cellule);
	            
	            
	            //Mercredi apres midi
	            cellule = Utilz.ajoutEnseignement("Systeme","D.Revuz","2051",CM,4);
	            table.addCell(cellule);
	            	            
	            //Jeudi apre midi
	            cellule = Utilz.ajoutEnseignement("Sport","","",CM,4);
	            table.addCell(cellule);
	            	          
	            //Vendredi apre midi
	            cellule = Utilz.ajoutEnseignement("","","",CM,4);
	            table.addCell(cellule);
	            	            
	            cell.setHorizontalAlignment(Cell.ALIGN_CENTER);
	            cell.setVerticalAlignment(Cell.ALIGN_CENTER);
	            table.addCell("16h00\n-\n18h00");
	           
	            table.setWidth(100);
	            document.add(table);
	           
	        }
	        catch(DocumentException de) {
	            System.err.println(de.getMessage());
	        }
	        catch(IOException ioe) {
	            System.err.println(ioe.getMessage());
	        }
	        // etape 5: fermeture du document
	        document.close();
	        System.out.println("Document '"+out+"' generated");
	    }
}



package Utilz;

import java.awt.Color;
import com.lowagie.text.*;

public class Utilz {

	/*Création du Header du document*/
	public static HeaderFooter createHeader() {
		Paragraph para = new Paragraph();
		para.add("Entete du fichier PDF");
		HeaderFooter header = new HeaderFooter(para,false);
		header.setAlignment(HeaderFooter.ALIGN_CENTER);
		return header;
	}
	
	/*Ajout d'un enseignement à notre emploi du temps*/
	public static Cell ajoutEnseignement(String cours,String prof, String salle, int type, int heure) {
		Cell cell = new Cell("");
		Paragraph p = new Paragraph();
		p.add(cours +"\n"+prof+"\n"+salle);
		cell.add(p);
		cell.setColspan(type);
		cell.setRowspan(heure/2);
		cell.setHorizontalAlignment(Cell.ALIGN_CENTER);
		cell.setVerticalAlignment(Cell.ALIGN_CENTER);
		return cell;
	}
	
	/*Création du tableau de notre emploi du temps*/	
	public static Table createTable(int debut) throws BadElementException {
		String sFin = Integer.toString(debut+4);
		Table table = new Table(11);
		table.setBorderWidth(2);
		table.setBorderColor(new Color(0, 0, 255));
		table.setPadding(5);
		table.setSpacing(3);

		Cell cell = createCell("Semaine du "+debut+" au "+ sFin +" décembre",11);
		table.addCell(cell);
		cell = createCell("Jours\n/\nHeure",1);        
		table.addCell(cell);
		cell=createCell("Lundi "+Integer.toString(debut),2);
		table.addCell(cell);
		cell=createCell("Mardi "+Integer.toString(debut+1),2);
		table.addCell(cell);
		cell=createCell("Mercredi "+Integer.toString(debut+2),2);
		table.addCell(cell);
		cell=createCell("Jeudi "+Integer.toString(debut+3),2);
		table.addCell(cell);
		cell= createCell("Vendredi "+Integer.toString(debut+4),2);
		table.addCell(cell);
		return table;
	}
	/*Aide à la création d'une cellule */	
	private static Cell createCell(String sCell, int colspan) {
		Cell cell = new Cell(sCell);
		cell.setColspan(colspan);
		cell.setHorizontalAlignment(Cell.ALIGN_CENTER);
		cell.setVerticalAlignment(Cell.ALIGN_CENTER);
		return cell;
	}
}

Le fichier edt.pdf contient le tableau de notre emploi du temps.

Valid HTML 4.01!