PDFを生成するためにJavaでitext 5.3を使用しています。HTMLWorker.parseToList(Reader, StyleSheet)
Bold、Italic、href などの HTML タグを含む一部を PDF に変換するために使用していました。完全な HTML を PDF に生成するのではなく、PDF のテキストの一部が HTML になります。たとえば、「This is test bold text」のような文字列は、テキストの一部を太字に変換します。
で性能は良好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;
}
}
別のJavafile.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");