Insérer du code HTML dans le Corps d'un HTMLDocument
Cela semble être une question aussi simple, mais je vais avoir une telle difficulté avec elle.
Problème:
J'ai un peu de texte à insérer dans un HTMLDocument
. Ce texte parfois spécifie le code html. E. G.:
Some <br />Random <b>HTML</b>
Je suis en utilisant HTMLEditorKit.insertHTML
pour l'insérer à un offset spécifié. Cela fonctionne très bien, sauf si le décalage est au début de la doc (offset = 1). Lorsque c'est le cas, le texte est inséré dans le head
du document au lieu de le body
.
Exemple:
editorKitInstance.insertHTML(doc, offset, "<font>"+stringToInsert+"</font>", 0, 0, HTML.Tag.FONT);
- Je utiliser l'étiquette de police j'ai donc maintenant ce que je suis insertion sera dans une police de caractères de la balise avec aucun des attributs de sorte qu'il ne sera pas l'effet de la format. J'ai besoin de savoir cela parce que le dernier paramètre, insertTag
, et je ne peux pas connaître le contenu de stringToInsert
jusqu'à l'exécution. Si il y a déjà du texte dans la doc (comme "1234567890") puis c'est la sortie:
<html>
<head>
</head>
<body>
<p style="margin-top: 0">
1234567890 <font>something <br />Some <br />Random <b>HTML</b></font>
</p>
</body>
</html>
Toutefois, si le décalage est de 1 et le document est vide c'est le résultat:
<html>
<head>
<font>Some <br />Random <b>HTML</b></font>
</head>
<body>
</body>
</html>
Autres Notes:
- Cela est fait sur la
innerdocument d'unJEditorPane
. Si
il y a une meilleure façon de remplacer du texte
dans unJEditorPane
avec potentiel
HTML je voudrais être ouverts à ces idées
ainsi.
Toute aide serait appréciée. Merci!
OriginalL'auteur Robbie | 2010-08-12
Vous devez vous connecter pour publier un commentaire.
Il y a plusieurs choses que vous devez savoir à propos de la structure interne de la HTMLDocument.
javax.swing.text.AbstractDocument$Content
. Cela inclut le titre et les balises de script. La position/l'argument décalage de n'IMPORTE quel document et de l'éditeur de kit de la fonction renvoie le texte de cette instance de Contenu! Vous devez déterminer le début de l'élément de corps correctement insérer du contenu dans le corps. BTW: Même si vous n'avez pas de définir un élément de corps dans votre code HTML, il sera auto-générées par l'analyseur....</span><span>...
" - il n'y a qu'une seule position (faisant référence à l'instance de) "à la fin de la première travée", "entre les portées" et "au début de la seconde plage". Pour résoudre ce problème, il existe 4 fonctions dans le HTMLDocument API:En conclusion: pour une des solutions générales, vous devez trouver le CORPS de l'élément à dire le document "insertAfterStart" de l'organisme et au début du décalage de l'élément body.
Suivantes ciselée devrait fonctionner dans tous les cas:
Si vous êtes sûr que l'en-tête est toujours vide, il est une autre façon:
Mais ceci lancera une RuntimeException, si l'en-tête n'est pas vide.
Par la manière, je préfère utiliser JWebEngine de gérer et de rendre le contenu HTML comme il ne cesse d'en-tête et le contenu sont séparés, si l'insertion à la position 0 fonctionne toujours.
OriginalL'auteur tigger