如何在iText中从HTML创建Phrase对象?支持iText 7、Java及iText 5示例
当然可以啦!不管是你正在用的iText 7,还是旧版本的iText 5,都能轻松实现从HTML生成Phrase对象的需求。下面我分别给你对应的Java示例,步骤清晰,直接就能跑起来~
iText 7 实现示例
iText 7的核心库不直接处理HTML,所以需要额外引入html2pdf模块来完成HTML解析。先给你Maven依赖配置(如果用Gradle的话可以对应调整):
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itext7-core</artifactId> <version>7.2.5</version> <type>pom</type> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>html2pdf</artifactId> <version>4.0.2</version> </dependency>
接下来是Java代码示例:
import com.itextpdf.html2pdf.HtmlConverter; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.layout.Document; import com.itextpdf.layout.element.IElement; import com.itextpdf.layout.element.Phrase; import java.io.File; import java.io.IOException; import java.util.List; public class HtmlToPhraseIText7 { public static void main(String[] args) throws IOException { // 待转换的HTML内容,支持基础格式化标签 String htmlContent = "<b>Hello</b> <i>World!</i> 这是从HTML转成的Phrase对象"; // 将HTML解析为iText 7的元素列表 List<IElement> htmlElements = HtmlConverter.convertToElements(htmlContent); // 创建Phrase并添加解析后的元素 Phrase targetPhrase = new Phrase(); for (IElement element : htmlElements) { targetPhrase.add(element); } // 验证:把Phrase写入PDF查看效果 PdfWriter writer = new PdfWriter(new File("html_to_phrase_itext7.pdf")); PdfDocument pdfDoc = new PdfDocument(writer); Document doc = new Document(pdfDoc); doc.add(targetPhrase); doc.close(); } }
简单说下逻辑:先把HTML转换成iText 7能识别的元素列表,再把这些元素逐个加入到Phrase中,这样Phrase就保留了HTML里的格式(比如加粗、斜体),最后可以把它添加到PDF文档里验证结果。
iText 5 实现示例
iText 5用的是XML Worker模块来处理HTML,API更直接,直接提供了生成Phrase的方法。先看Maven依赖:
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.13.3</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>xmlworker</artifactId> <version>5.5.13.3</version> </dependency>
对应的Java代码:
import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Phrase; import com.itextpdf.text.pdf.PdfWriter; import com.itextpdf.tool.xml.XMLWorkerHelper; import java.io.FileOutputStream; import java.io.IOException; import java.io.StringReader; public class HtmlToPhraseIText5 { public static void main(String[] args) throws IOException, DocumentException { String htmlContent = "<b>Hello</b> <i>World!</i> 这是iText 5中从HTML转成的Phrase"; // 直接用XMLWorkerHelper把HTML解析成Phrase Phrase targetPhrase = XMLWorkerHelper.parseToPhrase(new StringReader(htmlContent)); // 验证:写入PDF查看效果 Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("html_to_phrase_itext5.pdf")); document.open(); document.add(targetPhrase); document.close(); } }
这里更简单,XMLWorkerHelper.parseToPhrase()方法直接接收HTML的Reader对象,就能生成带格式的Phrase,非常方便。
小提示
如果你的HTML包含复杂元素(比如表格、图片),转换后的Phrase可能需要额外处理,但基础的文本格式化(加粗、斜体、颜色等)都能完美保留哦。
内容的提问来源于stack exchange,提问作者Flash
相关产品推荐
相关产品推荐

