Fridimette
Messages postés12Date d'inscriptionmercredi 19 mars 2008StatutMembreDernière intervention21 avril 2008
-
20 mars 2008 à 16:51
Fridimette
Messages postés12Date d'inscriptionmercredi 19 mars 2008StatutMembreDernière intervention21 avril 2008
-
27 mars 2008 à 10:16
Bonjour,
Je bosse en ce moment sur un File Printer en java : j'ai des parties
fixes et donc j'utilise du code HTML pour la mise en forme => donc
oui JTextPane est mon ami !
Cependant, j'ai cherché comment ouvrir une page en .html dans mon petit programme java et l'afficher sans les balises (cad comme dans un web browser): mais là je
suis perdue !
/**concernant la partie variable de cette Fiche
for (int i=0; i < initString.length; i++) {
doc.insertString(doc.getLength(), initString[i],as);
}**/
//insertion de la fin de la Fiche Récapitulative qui reste inchangée
String filename ="/home/fripette/Desktop/FilePrinter/finFicheRecap.html";
FileReader finFichRecap= new FileReader(filename);
doc.insertString(doc.getLength(),String.valueOf(finFichRecap),as);
//doc.getStyle(as));
}
catch(BadLocationException ble){
System.err.println("Couldn't insert initial text into text pane.");
}
}
}
--> Fin du code.
A quoi servent les lignes suivantes :
Style defaut = texte.getStyle("default");
Style as = texte.addStyle("stylePerso",defaut);
//SimpleAttributeSet as = new SimpleAttributeSet();
StyleConstants.setFontFamily(as, "Monospaced");
StyleConstants.setFontSize(as, 20);
StyleConstants.setAlignment(as, 1);
StyledDocument doc = texte.getStyledDocument();
en effet j'ai précisé au début :
HTMLEditorKit k = new HTMLEditorKit();
HTMLDocument doc = (HTMLDocument)k.createDefaultDocument();
et je pensais que c'était suffisant mais je retrouve à chaque fois le StyledDocument !
Enfin : comment ajouter la page que j'ai génére dans le JTextPane :
parce que partout ce que je lis (peut etre que je lis mal voir sans
aucun doute):
ils ajoutent le HTML dans le StyledDocument doc grâce à la méthode insertString.
mais chez moi ca marche pas!
En gros, au vu de mon code, quel est l'étape juste apres pour afficher la page html dans le JtextPane si la méthode insertString n'est pas la bonne.
Merci beaucoup pour votre aide parce que je suis vraiment perdue !
Fridimette
Messages postés12Date d'inscriptionmercredi 19 mars 2008StatutMembreDernière intervention21 avril 2008 21 mars 2008 à 12:38
Bon petite évolution :
mon nouveau soucis : le remplissage de mon JTextPane ne se fait pas dans la
même dans le main (endroit de la définition/l'initialisation de mon
JTextPane)
En effet, en fonction des selections de l'utilisateur dans la barre de
Menu: la page hmtl appropriée va se charger dans le JTextPane. (donc
page blanche au début puis en fonction de l'item sélectionné chargement
de la page).
texte = new JTextPane();
texte.setContentType("text/html");
HTMLEditorKit k = new HTMLEditorKit();
//L'unité de base de la structure est un Element, qui a un ensemble d'attributs.
//Les éléments st de natures différentes suivant qu'on a affaire un texte HTML : html, body, p, content, etc...
doc = (HTMLDocument)k.createDefaultDocument();
texte.setEditorKit(k);
texte.setDocument(doc);
Style defaut = texte.getStyle("default");
Style as = texte.addStyle("stylePerso",defaut);
Fridimette
Messages postés12Date d'inscriptionmercredi 19 mars 2008StatutMembreDernière intervention21 avril 2008 27 mars 2008 à 10:16
Bon je vous tiens au courant de mon avancé et des problèmes rencontrés.
Peut-être que quelqu'un se trouvera dans mon cas un jour et qu'un autre quelqu'un pourra peut etre m'aider à avancer (maintenant que mon projet est de plus en plus clair).
Je génère des bouts de texte en html que j'ajoute à un fichier html final qui sera affiché dans le JEditorPane :
texte = new JEditorPane();
texte.setContentType("text/html");
texte.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE);
StyleSheet myStyleSheet = new StyleSheet();
myStyleSheet.addRule("body {font: 20px Dialog; color: blue}");
myStyleSheet.addRule("p {font: 20px Serif}");
HTMLEditorKit k = (HTMLEditorKit)(texte.getEditorKitForContentType("text/html"));
k.setStyleSheet(myStyleSheet);
texte.setEditorKit(k);
//Partie concernant l'entête non variable de cette Fiche
/* Ouverture des flux */
FileInputStream debutfilename =new FileInputStream("/home/fripette/workspace/FilePrinter/enteteFicheRecap.html");
FileOutputStream fichierFinal = new FileOutputStream("/home/fripette/workspace/FilePrinter/FinalFicheRecap.html");
/* Lecture par segment de 0.5Mo */
byte buffer[]=new byte[512*1024];
/* Ecriture du début du fichier dans le fichier final */
WriteHTML(debutfilename,fichierFinal,buffer,0);
/* Fermeture des flux */
debutfilename.close();
/*Partie concernant la partie variable de cette Fiche*/
/* Ecriture des données variables dans un fichier qi va être relu après */ FileWriter milieufilename =new FileWriter("/home/fripette/workspace/FilePrinter/milieuFicheRecap.html");
String intro= "Codification des échantillons prélevés";
milieufilename.write(intro);
/* Ecriture de la partie variable dans le fichier final */
FileInputStream milieu =new FileInputStream("/home/fripette/workspace/FilePrinter/milieuFicheRecap.html");
byte buffer3[]= new byte[512*1024];
WriteHTML(milieu,fichierFinal,buffer3,0);
//Partie concernant la partie finale non variable de cette Fiche
FileInputStream finfilename =new FileInputStream("/home/fripette/workspace/FilePrinter/finFicheRecap.html");
byte buffer2[]= new byte[512*1024];
WriteHTML(finfilename,fichierFinal,buffer2,0);
/* Fermeture des flux */
finfilename.close();
fichierFinal.close();
//IMPORTANT :pour insérer une page .html dans le JTextPane texte.read(fichierFinal,doc);
FileInputStream ficheFinal = new FileInputStream("/home/fripette/workspace/FilePrinter/FinalFicheRecap.html");
// au final : on relit le fichier final en .html dans lequel j'ai ajouté mes bouts de .html
texte.read(ficheFinal,doc);
}
Bon ce que j'ai essayé de faire c'est :
ajouter un logo : mais j'ai mis le source dans le code html mais celui ci n'est pas pris en compte par le JTextPane (ou JEditorPane):
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<META http-equiv ="Content-Type" content="text/html; charset=ISO-8859-1">