Я пишу проект с Batik, который предназначен для многоязычного изображения. Поэтому мне нужны такие знаки, как «сигма» или «альфа». Я должен написать символ как текст, а не как многоугольник или глиф, потому что он должен быть снова написан моим проектом.Написание символов Unicode с помощью Batik не работает
Если я пишу Юникод символ в моей SVGDocument он правильно отображается в отладчике, но если я пишу SVG всегда есть ?
, или для нормального Письма, таких как A
, ?A
в качестве результата.
Я думаю, это проблема моего писателя, но я не знаю, как это исправить. Я знаю, что есть некоторые решения от SVG, такие как использование unicode с &#XXX
или σ
, но я не могу дать Node String, и он будет написан в правильной форме.
Вот коротко и, надеюсь, понятно пример кода:
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();
}
Спасибо теперь работает, он записывает в него знак юникода. Огромное! Если есть решение, как я мог писать, думаю, что & # XXX из java в svg тоже меня заинтересовал. Но спасибо за этот быстрый ответ – Luke
Люк, вам следует ** принять ** ответ, чтобы дать ему кредит на чай. –