2016-08-16 5 views
0

新しいテキストをitext elementListに変換したいと思います。 parseXhtml関数を使いたいのですが、私のテーブルの各セルにpdfテキストが必要です。 htmlからitext要素リストへの変換中に、私のttfフォントファイルを使用する方法はありますか? Imは使用して:iTextの要素のリストに私のHTMLテキストを変換するXMLworkerHelperは、htmlテキストをitext要素リストに変換する際に新しいフォントを使用します。

ElementList el1 = XMLWorkerHelper.parseToElementList(chunk1Text, CSS); 

をしかし、私は私のhtmlで 「クーリエ新」のようなフォントを指定した場合、それは「のTimes New Roman」にそのフォントが、デフォルトのレンダリングdoesen'tどのようにそのフォントを使用できますか? 私が前に述べたように、変換されたpdfではなく、htmltextからのみ要素リストをitextしたい。

+0

私は思います私はすでにここで同じ考慮事項がありました:http://stackoverflow.com/questions/30712551/how-to-create-a-pdf-with-itextxmlworker-from-servlet-using-custom-font – Dfaure

答えて

1

特定のフォント処理についてのコメントをご覧ください。 PDFファイルの生成自体を考慮

は、私は自分のpdfテーブルを作成し、以下のようなもので、そのセルを埋める、htmlContextするために使用さだし、cssResolverは、再利用可能なクラスの属性として定義される:

private ElementList getElementsFromHtml(final String html) throws IOException { 
    //... 

    // Pipelines 
    final ElementList elements = new ElementList(); 

    final ElementHandlerPipeline end = new ElementHandlerPipeline(elements, null); 
    final HtmlPipeline htmlPipeline = new HtmlPipeline(htmlContext, end); 
    final CssResolverPipeline cssPipeline = new CssResolverPipeline(cssResolver, htmlPipeline); 

    // XML Worker 
    final XMLWorker worker = new XMLWorker(cssPipeline, true); 
    final XMLParser p = new XMLParser(true, worker, htmlContext.charSet()); 

    final String resolvedHtml = "<body>" + html + "</body>"; 
    p.parse(new ByteArrayInputStream(resolvedHtml.getBytes(htmlContext.charSet())), htmlContext.charSet()); 

    return elements; 
} 

public void addHtml(final PdfPCell cell, final String html) throws IOException { 
    for (final Element e : getElementsFromHtml(html)) { 
     if (ColumnText.isAllowedElement(e)) { 
      cell.addElement(e); 
     } else { 
      LOG.error(String.format("### Element not allowed! ###\nElement (type: %d): %s\nContext: %s", e.type(), e.toString(), html)); 
     } 
    } 
} 
関連する問題