iText 7:如何构建混合不同字体的段落?
iText 7: How to build a paragraph mixing different fonts?
几天来我一直在使用 iText 7 构建 pdf 文件,不幸的是,iText 7 与 iText 5 有很大不同,文档仍然很不完整。
我正在尝试构建一个混合两种字体或两种字体样式的段落(例如:段落中间有一个粗体文本)
使用 iText 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 时切换字体要容易得多,因为您可以使用默认字体和字体大小,可以定义和重用 Style
对象,等等上。
一个例子:
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);
首先,我们定义一个 Style
,我们称之为 normal
,它使用 14 pt Times-Roman。然后我们定义一个我们称之为 code
的 Style
,它使用 12 pt Courier in Red with a gray background.
然后我们使用使用这些样式的 Text
个对象组成一个 Paragraph
。
请注意,您可以链接 add()
评论,如本例中所做的那样:
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);
我们将新建的Paragraph
字体大小设置为8pt。此字体大小将由添加到 Paragraph
的所有对象继承,除非对象覆盖默认大小。我们为 title1
定义了 12 pt 的字体大小,为 title2
定义了 16 pt 的字体大小。添加为 String
(" by "
) 的内容和添加为未定义字体大小的 Text
对象的内容继承从 Paragraph
到 8 pt 的字体大小他们被添加了。
这是来自官方教程的copy/paste。我希望这对于不允许 "link-only" 答案的 Whosebug 来说已经足够了。 "no link-only answers rule" 不应导致 copy/pasting 手册的完整章节...
几天来我一直在使用 iText 7 构建 pdf 文件,不幸的是,iText 7 与 iText 5 有很大不同,文档仍然很不完整。
我正在尝试构建一个混合两种字体或两种字体样式的段落(例如:段落中间有一个粗体文本)
使用 iText 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 时切换字体要容易得多,因为您可以使用默认字体和字体大小,可以定义和重用 Style
对象,等等上。
一个例子:
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);
首先,我们定义一个 Style
,我们称之为 normal
,它使用 14 pt Times-Roman。然后我们定义一个我们称之为 code
的 Style
,它使用 12 pt Courier in Red with a gray background.
然后我们使用使用这些样式的 Text
个对象组成一个 Paragraph
。
请注意,您可以链接 add()
评论,如本例中所做的那样:
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);
我们将新建的Paragraph
字体大小设置为8pt。此字体大小将由添加到 Paragraph
的所有对象继承,除非对象覆盖默认大小。我们为 title1
定义了 12 pt 的字体大小,为 title2
定义了 16 pt 的字体大小。添加为 String
(" by "
) 的内容和添加为未定义字体大小的 Text
对象的内容继承从 Paragraph
到 8 pt 的字体大小他们被添加了。
这是来自官方教程的copy/paste。我希望这对于不允许 "link-only" 答案的 Whosebug 来说已经足够了。 "no link-only answers rule" 不应导致 copy/pasting 手册的完整章节...