Я использую itext 5.3 в java для создания PDF. Я использовал HTMLWorker.parseToList(Reader, StyleSheet)
для преобразования части в String, которая содержит HTML-теги, такие как Bold, Italic, href и т. Д. В PDF. Я не хочу генерировать полный HTML в PDF, а часть текста в формате PDF будет HTML. Например, строки, такие как «Это тестовый полужирный текст», чтобы преобразовать часть текста в полужирный.XMLWorkerHelper performance slow
Производительность хороша с HTMLWorker
.
С тех пор, как он устарел, я начал использовать XMLWorkerHelper.parseXHtml(ElementHandler, Reader)
, и я обнаружил, что производительность очень плохая по сравнению с HTMLWorker
.
Если у кого-либо есть представление о решении или любом другом обходном пути, сообщите мне.
Ниже приведен пример кода и других почтовых отправлений с образцом кода на
HTML to List using XMLWorker
public class HTMLElementHandler implements ElementHandler {
private Phrase phrase;
private Font font;
private HTMLElementHandler(Phrase phrase, Font font) {
super();
setPhrase(phrase);
setFont(font);
}
@Override
public void add(Writable writable) {
if (writable instanceof WritableElement) {
List<Element> elements = ((WritableElement) writable).elements();
for (Element elem : elements) {
List<Chunk> chunks = elem.getChunks();
for (Chunk chunk : chunks) {
Font chunkFont = chunk.getFont();
//Do something with fonts here
}
phrase.setFont(font);
phrase.add(elem);
}
}
}
public Phrase getPhrase() {
return this.phrase;
}
public void setPhrase(Phrase phrase) {
this.phrase = phrase;
}
public Font getFont() {
return this.font;
}
public void setFont(Font font) {
this.font = font;
}
}
AnotherJavafile.java
Phrase ph = new Phrase();
Font font = FontFactory.getFont(FontFactory.getFont("Arial").getFamilyname(), 12, new BaseColor(0, 102, 153));
XMLWorkerHelper.getInstance().parseXHtml(new HTMLElementHandler(phrase, font), "This is test <bold> bold </bold> text");
Я тоже, к сожалению, видим некоторые довольно плохую работу из этого класса, хотя и не от Java, от iTextSharp, порт C# той же библиотеки. –
Я тоже. Последним является внутренний метод ParseXHtml: iTextSharp.text.FontFactoryImp.RegisterDirectories –
см. Также itextsharp issue - http://stackoverflow.com/q/21275800/179972 –