j'ecris ce moment un projet java.J'ai du mal à exporter mes données de la DB dans un fichier pdf.
Version imprimable
j'ecris ce moment un projet java.J'ai du mal à exporter mes données de la DB dans un fichier pdf.
Ces 2 phrases dissimulent-elles une question :? ?Citation:
Envoyé par gagalive
Y a pas de miracles pour faire des choses pareilles, il va te falloir employer une api pour PDF et ensuite parcourir toute ta base et inscrire toutes les données que tu veut dans ton pdf.
mais comment
si je peut donner mon avis je te conseille FOP (la version qui est en beta ;-) )
le principe de fop c'est simple
tu fais une feuille XSL(-FO) avec un bloc note
tu crer un document xml a partir de ton programe java
tu fais la transformation ca veut dire tu passe a ta feuille xsl le document xml et tu lui fais generer le fichier pdf.
j'ai utiliser une fois pour faire des sortie de facture... c'est simple et puissant et customisable.
Tu as aussi iText, très simple pour générer des fichiers pdf (rtf et html également)
http://www.lowagie.com/iText/
J'ai essaye aussi bien FOP qu'Itext rien de tout cela ne fonctionne,au fait je ne sais pas comment m'y prendre.
Merci
A partir d'où ?Citation:
Envoyé par gagalive
1. penser à comment tu veux que ça marche
2. regarder les API disponibles et choisir la mieux pour le traitement désiré
3. ecrire les classes
4. poser les questions, montrer ton code et tes erreurs pour qu'on puisse t'aider
5. debugger
peux tu préciser le fond de ta pensée ?
En fait je n'ai jamais travaille avec FOP ou Itext.Ce que je veux c'est extraire des données d'une DB et les presenter sur un PDF.
J'ai trouve des exemples utilisant Itext sur le net,malheuresement je ne peux les compiler car certaines classes ne sont pas reconnues.par exemple
DocListener,Document() et autres.
Merci.
si certaine classes ne sont pas reconnue c'est peut être simplment un problème de classpath ...
t'as bien téléchargé les jar au moins ? ;)
oui j'ai tout bien telecharger et les path aussi j'ai fait attention,mais le pb persisite.:(
t'es sûr ? :?
tu travailles avec un IDE ?
quel message d'erreur exactement ? Cannot find class ... ?
Problème de path ou de librarie, je persiste ! ;)
voici la reponse du compiler:
Code:
1
2
3
4
5
6
7
8
9
10 Exception in thread "main" java.lang.Error: Unresolved compilation problems: Cannot instantiate the type Document The method getInstance(Document, OutputStream) in the type PdfWriter is not applicable for the arguments (Document, FileOutputStream) The method open() is undefined for the type Document Paragraph cannot be resolved to a type DocumentException cannot be resolved to a type de cannot be resolved The method close() is undefined for the type Document at HelloWorld.main(HelloWorld.java:44)
voici la reponse du compiler:
voici le petit exemple que je veux essayer:Code:
1
2
3
4
5
6
7
8
9
10 Exception in thread "main" java.lang.Error: Unresolved compilation problems: Cannot instantiate the type Document The method getInstance(Document, OutputStream) in the type PdfWriter is not applicable for the arguments (Document, FileOutputStream) The method open() is undefined for the type Document Paragraph cannot be resolved to a type DocumentException cannot be resolved to a type de cannot be resolved The method close() is undefined for the type Document at HelloWorld.main(HelloWorld.java:44)
En rouge ce sont les inconnus indiques par le compiler.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 import java.io.FileOutputStream; import java.io.IOException; import javax.swing.text.Document; import com.lowagie.text.*; import com.lowagie.text.pdf.PdfWriter; /** * Generates a simple 'Hello World' PDF file. * * @author blowagie */ public class HelloWorld { /** * Generates a PDF file with the text 'Hello World' * * @param args no arguments needed here */ public static void main(String[] args) { System.out.println("Hello World"); // step 1: creation of a document-object Document document = new Document(); try { // step 2: // we create a writer that listens to the document // and directs a PDF-stream to a file PdfWriter.getstanceIn(document, new FileOutputStream("HelloWorld.pdf")); // step 3: we open the document document.open(); // step 4: we add a paragraph to the document document.add(new Paragraph("Hello World")); } catch (DocumentException de) { System.err.println(de.getMessage()); } catch (IOException ioe) { System.err.println(ioe.getMessage()); } // step 5: we close the document document.close(); } }
Reponse???
[EDIT] désolé fausse manip :oops:
Citation:
Envoyé par gagalive
ben pour moi c'est un pb de classpath. enfin si tu dis que non ...
tu la lance à la main la compil ?
on peut voir la commande que tu tapes et le classpath par la meme occaz ?
En fait tu instancies le mauvais type de Document:
il te faut utiliser
dans tes imports et nonCode:import com.lowagie.text.Document;
Code:import javax.swing.text.Document;
Le meme probleme se pose maintenant il semble ne pas reonnaitre "com.lowagie.".Code:import com.lowagie.text.Document;
En fait pour le moment j'essaye une autre methode.Comme mon but est de transferer mes donnees de la DB vers un pdf.Je voudrais maintenant tout d'abord les afficher dans une JTable et de la je choisirais un format d'exportation assez simple pas forcemant le pdf.Puisque jusqu'a maintenant j'ai deja essaye et essaye ca ne fonctionne pas.
Pour le moment je suis bloque sur ce petit programme que j'ai ecrit mais qui ne m'affiche rien de bon
Quel pourrait etre le pb dans ce morceau de programme.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; public class Test { private String[] colName = {"Land", "moyenne par jour","Sopra"}; public void fram (String[][] rowData){ JTable table = new JTable( rowData,this.colName); JFrame frame = new JFrame(); frame.getContentPane().add( new JScrollPane(table) ); frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); frame.pack(); frame.setVisible( true ); } public void main (String args[]){ String[][] Daten = { { "Japon", "245","soir" }, { "USA", "240","matin" }, { "Italie", "220","une bonne mere" }, { "Espagne", "217","paisible" }, {"Turquie", "215","le village"} ,{"Angleterre", "214","les enfants"} }; Test test = new Test(); test.fram(Daten); } }
Voici le resultat de la compilation
MerciCode:
1
2 java.lang.NoSuchMethodError: main Exception in thread "main"
une méthode main doit être static, la vraie signature de la méthode main est donc :
Code:public static void main (String[] args){}
Exactement!!!!!
Je pense apres de nombreux d'essais on a plus vraiment la tete sur les epaules,meme su les choses les plus evidentes au monde.