J'écris un projet avec Batik, qui est pour l'image multi-langue. J'ai donc besoin de signes comme "sigma" ou "alpha". Je dois écrire le caractère en tant que texte - pas comme un polygone ou comme un glyphe - parce qu'il doit être écrit par mon projet à nouveau.Écrire des caractères Unicode avec Batik ne fonctionne pas
Si j'écris un caractère unicode dans mon SVGDocument il apparaît correctement dans le débogueur, mais si j'écris en SVG il y a toujours un ?
, ou Lettre normale, comme A
, ?A
en conséquence.
Je pense que c'est un problème de mon auteur, mais je ne sais pas comment y remédier. Je sais qu'il existe des solutions de SVG comme l'utilisation de l'Unicode avec &#XXX
ou σ
mais je ne peux pas donner le nœud de cette chaîne et il sera écrit dans le bon format.
Voici court et exemple, espérons-code compréhensible:
enter code here
import java.io.File;
import java.io.FileWriter;
import java.net.URI;
import org.apache.batik.dom.svg.SAXSVGDocumentFactory;
import org.apache.batik.dom.util.DOMUtilities;
import org.apache.batik.util.XMLResourceDescriptor;
import org.w3c.dom.Document;
import org.w3c.dom.Text;
public static void main(String args[]) throws Exception
{
/* Read Document
*/
URI source = new URI("file:D:/foo.svg");
//If there is no Parser:'parser' = null
String parser = XMLResourceDescriptor.getXMLParserClassName();
//for right interpretation
SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser);
String sourceUri = source.toString();
/* add Textnode
*/
Document doc = f.createSVGDocument(sourceUri);
String textWithUni = "\u0041";
Text textNode = doc.createTextNode(textWithUni);
doc.appendChild(textNode);
/*write
*/
File output = new File("newFoo.svg");
FileWriter fw = new FileWriter(output);
DOMUtilities.writeDocument(doc, fw);
fw.flush();
fw.close();
}
Merci ça marche maintenant, il écrit le signe Unicode en lui.Grand! S'il y a une solution comment je pourrais écrire pense comme & # XXX de Java dans svg m'intéresserait aussi. Mais merci beaucoup pour cette réponse rapide – Luke
Luke, vous devriez ** accepter ** la réponse, pour donner crédit à teabot pour cela. –