A voir également:
- Urgent probleme en iText
- Itext - Télécharger - PDF
4 réponses
Attention, j'utilise une vieille version de iText écrite en 2001 (qui marche encore bien).
Il faut d'abord importer iText et la classe PdfWriter :
import com.lowagie.text.*;
import com.lowagie.text.pdf.PdfWriter;
// Dans votre propre classe, vous pouvez prédéfinir des polices de caractères :
Font header01Font = new Font(Font.TIMES_NEW_ROMAN, 5, Font.NORMAL, new Color(0, 0, 0));
Font header02Font = new Font(Font.TIMES_NEW_ROMAN, 10, Font.BOLD, new Color(0, 0, 0));
Font header03Font = new Font(Font.TIMES_NEW_ROMAN, 8, Font.BOLD, new Color(0, 0, 0));
Font detailFont = new Font(Font.TIMES_NEW_ROMAN, 8, Font.NORMAL, new Color(0, 0, 0));
Font footerFont = new Font(Font.TIMES_NEW_ROMAN, 5, Font.BOLD, new Color(0, 0, 0));
// Créez votre Document (ici de format A4 paysage (avec rotate(), mais ce n'est pas obligé !, ensuite j'indique les marges :)
Document document = new Document(PageSize.A4.rotate(), 10, 10, 25, 25);
// Il faut créer le writer: (où TARGET_PATH peut être remplacé par le chemin du pdf à créer sur votre poste, par exemple "C:\\truc\\fichier.pdf")
PdfWriter.getInstance(document, new FileOutputStream (TARGET_PATH));
// Vous pouvez ajouter les informations qui figureront dans les proprités du PDF :
document.addAuthor("Miss Pardon");
document.addTitle("LE TITRE DE MON DOCUMENT");
document.addSubject("Blablabla, truc machin biduile");
document.addCreationDate();
//Ensuite, créez des objets Phrase, HeaderFooter... et ajoutez-les à votre document :
Phrase ph1 = new Phrase ();
ph1.add (new Phrase("L'en-tête de mon document\n", header01Font));
ph1.add (new Phrase("etc\n\n\n)); // NB les \n sont des sauts de ligne
// Création de l'en-tête header avec ph1 comme contenu
HeaderFooter header = new HeaderFooter(ph1, false);
// Ajout de l'en-tête header au document
document.setHeader(header);
// Idem pour le pied-de-page
Phrase footPh1 = new Phrase("Page ", footerFont);
Phrase footPh2 = new Phrase("", footerFont);
HeaderFooter footer = new HeaderFooter(footPh1, footPh2);
footer.setAlignment(Element.ALIGN_CENTER);
document.setFooter(footer);
// Ouverture du document
document.open();
// Création d'une table de 12 colonnes qu'on ajoutera au document :
Table datatable = new Table(12);
datatable.setCellpadding(0);
datatable.setCellspacing(0);
// Pas de bordure :
datatable.setBorder(Rectangle.NO_BORDER);
// On indique les largeurs respectives des colonnes :
int headerwidths[] = {2, 4, 8, 2, 8, 8, 8, 8, 36, 6, 6, 4};
datatable.setWidths(headerwidths);
// Largeur totale de la table :
datatable.setWidth(100);
// Autres configurations par défaut :
datatable.setDefaultCellBorder(Rectangle.NO_BORDER);
datatable.setDefaultHorizontalAlignment(Element.ALIGN_CENTER);
datatable.setDefaultRowspan(1);
datatable.setDefaultColspan(1);
// Ecriture de l'en-tête de table :
datatable.addCell(new Phrase("Colonne numéro 1", header03Font));
datatable.addCell(new Phrase("Colonne numéro 2", header03Font));
datatable.addCell(new Phrase("Colonne numéro 3", header03Font));
// ...
// Etc jusqu'à votre 12ème colonne :
datatable.addCell(new Phrase("Colonne numéro 12", header03Font));
// fin de l'en-tête de table :
datatable.endHeaders();
// Ecrire le contenu de votre tableau, 12 cellules par ligne :
table.addCell(new Phrase("celllule 1 blablabla", detailFont));
table.addCell(new Phrase("celllule 2 blablabla", detailFont));
// ... etc ...
table.addCell(new Phrase("celllule 12 blablabla", detailFont));
// et répéter autant de fois qu'il y a de lignes (attention de ne pas sauter une cellule si son contenu est vide,
// écrire alors table.addCell(new Phrase("", detailFont));
// Ajouter la table au document :
document.add(datatable);
// Fermer le document :
document.close();
Il faut d'abord importer iText et la classe PdfWriter :
import com.lowagie.text.*;
import com.lowagie.text.pdf.PdfWriter;
// Dans votre propre classe, vous pouvez prédéfinir des polices de caractères :
Font header01Font = new Font(Font.TIMES_NEW_ROMAN, 5, Font.NORMAL, new Color(0, 0, 0));
Font header02Font = new Font(Font.TIMES_NEW_ROMAN, 10, Font.BOLD, new Color(0, 0, 0));
Font header03Font = new Font(Font.TIMES_NEW_ROMAN, 8, Font.BOLD, new Color(0, 0, 0));
Font detailFont = new Font(Font.TIMES_NEW_ROMAN, 8, Font.NORMAL, new Color(0, 0, 0));
Font footerFont = new Font(Font.TIMES_NEW_ROMAN, 5, Font.BOLD, new Color(0, 0, 0));
// Créez votre Document (ici de format A4 paysage (avec rotate(), mais ce n'est pas obligé !, ensuite j'indique les marges :)
Document document = new Document(PageSize.A4.rotate(), 10, 10, 25, 25);
// Il faut créer le writer: (où TARGET_PATH peut être remplacé par le chemin du pdf à créer sur votre poste, par exemple "C:\\truc\\fichier.pdf")
PdfWriter.getInstance(document, new FileOutputStream (TARGET_PATH));
// Vous pouvez ajouter les informations qui figureront dans les proprités du PDF :
document.addAuthor("Miss Pardon");
document.addTitle("LE TITRE DE MON DOCUMENT");
document.addSubject("Blablabla, truc machin biduile");
document.addCreationDate();
//Ensuite, créez des objets Phrase, HeaderFooter... et ajoutez-les à votre document :
Phrase ph1 = new Phrase ();
ph1.add (new Phrase("L'en-tête de mon document\n", header01Font));
ph1.add (new Phrase("etc\n\n\n)); // NB les \n sont des sauts de ligne
// Création de l'en-tête header avec ph1 comme contenu
HeaderFooter header = new HeaderFooter(ph1, false);
// Ajout de l'en-tête header au document
document.setHeader(header);
// Idem pour le pied-de-page
Phrase footPh1 = new Phrase("Page ", footerFont);
Phrase footPh2 = new Phrase("", footerFont);
HeaderFooter footer = new HeaderFooter(footPh1, footPh2);
footer.setAlignment(Element.ALIGN_CENTER);
document.setFooter(footer);
// Ouverture du document
document.open();
// Création d'une table de 12 colonnes qu'on ajoutera au document :
Table datatable = new Table(12);
datatable.setCellpadding(0);
datatable.setCellspacing(0);
// Pas de bordure :
datatable.setBorder(Rectangle.NO_BORDER);
// On indique les largeurs respectives des colonnes :
int headerwidths[] = {2, 4, 8, 2, 8, 8, 8, 8, 36, 6, 6, 4};
datatable.setWidths(headerwidths);
// Largeur totale de la table :
datatable.setWidth(100);
// Autres configurations par défaut :
datatable.setDefaultCellBorder(Rectangle.NO_BORDER);
datatable.setDefaultHorizontalAlignment(Element.ALIGN_CENTER);
datatable.setDefaultRowspan(1);
datatable.setDefaultColspan(1);
// Ecriture de l'en-tête de table :
datatable.addCell(new Phrase("Colonne numéro 1", header03Font));
datatable.addCell(new Phrase("Colonne numéro 2", header03Font));
datatable.addCell(new Phrase("Colonne numéro 3", header03Font));
// ...
// Etc jusqu'à votre 12ème colonne :
datatable.addCell(new Phrase("Colonne numéro 12", header03Font));
// fin de l'en-tête de table :
datatable.endHeaders();
// Ecrire le contenu de votre tableau, 12 cellules par ligne :
table.addCell(new Phrase("celllule 1 blablabla", detailFont));
table.addCell(new Phrase("celllule 2 blablabla", detailFont));
// ... etc ...
table.addCell(new Phrase("celllule 12 blablabla", detailFont));
// et répéter autant de fois qu'il y a de lignes (attention de ne pas sauter une cellule si son contenu est vide,
// écrire alors table.addCell(new Phrase("", detailFont));
// Ajouter la table au document :
document.add(datatable);
// Fermer le document :
document.close();
miss pardon
Messages postés
10
Statut
Membre
Merci de ton aide in2ni.
Désolé je viens seulement de voir ton dernier message. Je te conseillerais, pour plus de clarté, de créer une classe par grand ensemble de fonctionnalité. Par exemple, une classe spéciale pour écrire les données vers PDF. Bien sûr celle-ci devra accéder d'une manière ou d'une autre aux données en entrée. Mais pour t'aider il faudrait que tu décrives un peu mieux ton projet d'application...
Faites un clic droit sur votre projet (si vous ne l'avez pas encore créé, File->New Project)
Dans le menu popup, sélectionnez Properties
Dans Categories, choisissez Libraries
Cliquez sur le bouton Add Libraries
Puis sur le bouton Manage Libraries
Puis New Library
Indiquez lui comme nom, par exemple, iText. (en type: Class Libraries), puis Ok
Dans l'onglet Classpath à droite, cliquez sur Add JAR/Folder, indiquez le chemin de votre fichier itext.jar et de tous les autres jar dont il aura besoin (il est possible qu'iText ait des dépendances)
Revenez sur Projects/Properties/Libraries/, puis le bouton Add Library, et ajoutez la librairie iText, et voilà !
Bien sûr, dans votre code, il faut importer les classes ou packages nécessaires à iText (import...)
Bonne chance !
Dans le menu popup, sélectionnez Properties
Dans Categories, choisissez Libraries
Cliquez sur le bouton Add Libraries
Puis sur le bouton Manage Libraries
Puis New Library
Indiquez lui comme nom, par exemple, iText. (en type: Class Libraries), puis Ok
Dans l'onglet Classpath à droite, cliquez sur Add JAR/Folder, indiquez le chemin de votre fichier itext.jar et de tous les autres jar dont il aura besoin (il est possible qu'iText ait des dépendances)
Revenez sur Projects/Properties/Libraries/, puis le bouton Add Library, et ajoutez la librairie iText, et voilà !
Bien sûr, dans votre code, il faut importer les classes ou packages nécessaires à iText (import...)
Bonne chance !