2017-02-23 1 views
0
String test = "Hello -this is a string of text"; 

Etwas wie folgt aus: ... Jedes Mal, wenn die Textzeichenfolge in einem itext 7 Text oder Paragraph verwendet wurde, wäre es "this"kursiv oder einige bis Style gesetzt machen.Gibt es eine Möglichkeit, Text automatisch zu formatieren, ohne die Style-Klasse direkt zu verwenden;

Ziemlich viel Verwendung von Sonderzeichen machen Text erscheinen mit einem gewissen Style itext7 mit:

ich so etwas wie dieses brauchen, weil die Nutzer des Programms werden bestimmte Wörter kursiv machen wollen.

Die Benutzer geben in eine TextArea ein, um eine String zu definieren. Ich habe Strings gespeichert, dann machen nur Text oder Paragraph diese Zeichenfolge zu halten:

  Cell location = new Cell() 
        .add(new Paragraph(test); 

ich aber über einen TextFlow verwenden, aber das wird mit itext7 nicht arbeiten, wie es JavaFX CSS verwendet.

+3

Split Sie String in Teile, für jeden Teil eines 'Text' Objekt erstellen, für die Teile, die Sie wollen, dass die sich ändern style für den entsprechenden Stil zum entsprechenden 'Text'-Objekt, und fügen Sie dann einfach alle' Text'-Objekte zu Ihrem Absatz hinzu. –

Antwort

0

Ich kam auf diese, es funktioniert, aber ist das nicht recht ...

private Paragraph formatText(String string) { 

    Paragraph paragraph = new Paragraph(); 

     Stream.of(string) 
      .map(w -> w.split(" ")) 
      .flatMap(Arrays::stream) 
      .forEach(w -> { 
       Text word; 

       if (w.startsWith("~")) { 
        String replace = w.replace("~", ""); 
        word = new Text(replace); 
        word.setItalic(); 

       } else if (w.startsWith("*")) {     
        String replace = w.replace("*", ""); 
        word = new Text(replace); 
        word.setItalic();  

       } else {      
        word = new Text(w); 
       } 

       paragraph.add(word);      
      }); 

    return paragraph; 

} 
Verwandte Themen