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.
J'ai pu transferer mes donnees de la DB à la JTable,à present je voudrais exporter le tout dans un fichier peu importe lequel,mon souhait serait un fichier pdf.
Bah on en revient soit à itext soit à fop...., et donc à tes posts précédents....;)
Effectivement je n'ai aucune idee de comment fonctionne itext,fop ou jfree.Mon anglais n'est pas vraiment pointu par rapport aux tutorials kils proposent.Code:Bah on en revient soit à itext soit à fop...., et donc à tes posts précédents....
Une directive sur la facon de proceder me serait d'un aide tres precieux.
a+
Eventuellement tu as cette page sur laquelle il y a paquets d'exemples et ne nécessitant pas d'immenses connaissances en anglais (au pire un bon dico suffira pour les deux trois termes un peu chauds):
http://itextdocs.lowagie.com/tutorial/
Mais sinon plus généralement, la doc en anglais, quelques soit l'API tu n'y échaperas pas
Tjours pas de reultats.Voici par exemple un exemple de programm eque j'utilise:
voici le reultat de la compilation: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 import java.io.FileOutputStream; import java.io.IOException; import javax.swing.text.Document; import com.lowagie.text.Document; import com.lowagie.text.pdf.PdfWriter; 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 /*44*/ 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.getInstance(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(); } }
Code:
1
2
3
4
5
6
7
8 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)
ben il ne doit pas prendre le bon Document
essaie
à la ligne 44.Code:com.lowagie.text.Document document = new Document();
(à moins que je me gourre de syntaxe)
mais bon les erreurs parlent d'elle-mêmes. Les méthodes que tu utilises n'existent pas pour le type Document que tu utilises...
[EDIT] Pour le type paragraphe et DocumentException, tu n'a pas fais l'import ! c'est normal qu'il ne trouve pas
Tant que tu y est vire leil ne sert à rien et t'embrouillera plus qu'autre choseCode:import javax.swing.text.Document;
Je l'ai vire le resultat est le meme.
ben écoute c'est pas possible. je viens de regarder la javadoc de la lib que tu utilise, c'est bon.
C'est obligé, tu ne fais pas appel au bon type de Document...
fais voir comment tu le déclare (et tes import)
voici mon programme:
En rouge ce sont les points "unressolved"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 import java.io.FileOutputStream; import java.io.IOException; import com.lowagie.text.Document; import com.lowagie.text.pdf.PdfWriter; 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.getInstance(document, new FileOutputStream("HelloWorld.pdf")); // step 3: we open the document document.open(); // step 4: we add a paragraph to the document /*Line 52*/ 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(); } }
voici la reponse du compilateur
Code:
1
2
3
4
5
6 Exception in thread "main" java.lang.Error: Unresolved compilation problems: Paragraph cannot be resolved to a type DocumentException cannot be resolved to a type de cannot be resolved at HelloWorld.main(HelloWorld.java:52)
peut être que si tu faisais les import ça marcherait ! ;)
J'ai donc fait des imports,sinon de quels imports s'agit-il?
Code:
1
2
3
4 import java.io.FileOutputStream; import java.io.IOException; import com.lowagie.text.Document; import com.lowagie.text.pdf.PdfWriter;
Ben ? t'es sûr t'as pas une vague idée ? Ya pas des types qu'il n'arrive pas à résoudre ?
Aller la réponse :
franchement 8OCode:
1
2 import com.lowagie.text.Paragraph import com.lowagie.text.DocumentException
toujours rien de changer!!:(
n'ya t'il personne pour m'aider sur ce coup
Enfin de coöpte j'ai reussi.c'etait juste un probleme de Path.
Mantenant j'ai quasi termne mon projet,je remercis tous ceux qui m'ont file des tuyaux.Notament:Regis,wichtounet,et tous les autres...