iText 7: How to build a paragraph mixing different fonts?
这几天一直在用iText 7构建pdf文件,可惜iText 7和iText 5有很大不同,文档还很不完整。
我正在尝试构建一个混合两种字体或两种字体样式的段落(例如:在段落中间有一个粗体文本)
使用 iText 5 可以使用 Chunks:
1 2 3 4 5 | Font regular = new Font(FontFamily.HELVETICA, 12); Font bold = Font font = new Font(FontFamily.HELVETICA, 12, Font.BOLD); Phrase p = new Phrase("NAME:", bold); p.add(new Chunk(cc_cust_dob, regular)); PdfPCell cell = new PdfPCell(p); |
使用 iText 7,我仍然没有找到方法。
有没有人尝试过使用最新版本的 iText 来做到这一点?
注意:我使用的是 csharp,但 java 也很有用
请阅读文档,更具体地说是 iText 7: building blocks "Chapter 1: Introducing the PdfFont class"
在那一章中,您会发现在使用 iText 7 时切换字体要容易得多,因为您可以使用默认字体和字体大小,您可以定义和重用
一个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Style normal = new Style(); PdfFont font = PdfFontFactory.createFont(FontConstants.TIMES_ROMAN); normal.setFont(font).setFontSize(14); Style code = new Style(); PdfFont monospace = PdfFontFactory.createFont(FontConstants.COURIER); code.setFont(monospace).setFontColor(Color.RED) .setBackgroundColor(Color.LIGHT_GRAY); Paragraph p = new Paragraph(); p.add(new Text("The Strange Case of").addStyle(normal)); p.add(new Text("Dr. Jekyll").addStyle(code)); p.add(new Text(" and").addStyle(normal)); p.add(new Text("Mr. Hyde").addStyle(code)); p.add(new Text(".").addStyle(normal)); document.add(p); |
首先我们定义一个
然后我们使用使用这些样式的
请注意,您可以链接
1 2 3 4 5 6 | Text title1 = new Text("The Strange Case of").setFontSize(12); Text title2 = new Text("Dr. Jekyll and Mr. Hyde").setFontSize(16); Text author = new Text("Robert Louis Stevenson"); Paragraph p = new Paragraph().setFontSize(8) .add(title1).add(title2).add(" by").add(author); document.add(p); |
我们将新创建的
这是官方教程的复制/粘贴。我希望这对于不允许"仅链接"答案的 StackOverflow 来说已经足够了。此"无仅链接答案规则"不应导致复制/粘贴手册的整章...