如何使用 iText List 将具有不同权重的文本添加到单个 ListItem
How to add text with different weights to a single ListItem using iText List
我使用 iText 7 创建了一个问题和答案列表,其中问题和答案都显示在列表的同一行中。我试图让问题变得粗体,同时用正常的字体粗细留下答案。当我 运行 代码类似于下面显示的内容时,我得到这个 (com.itextpdf.layout.element.Text@73df99a1) 代替粗体文本。是否可以在同一个 iText 7 ListItem 中获取不同粗细的字体?
String dest = "destination.pdf"
PdfWriter writer = new PdfWriter(dest);
PdfDocument pdf = new PdfDocument(writer);
Document document = new Document(pdf);
List qaList = new List();
qaList.add(new ListItem(new Text("Question 1?").setBold() + "Answer 1"));
qaList.add(new ListItem(new Text("Question 2?").setBold() + "Answer 2"));
document.add(qaList);
document.close();
iText 7 中似乎没有允许在 ListItem 中使用多种字体的功能。我通过放弃列表并为每个列表项使用一个段落来解决我的问题。
String dest = "destination.pdf"
PdfWriter writer = new PdfWriter(dest);
PdfDocument pdf = new PdfDocument(writer);
Document document = new Document(pdf);
Paragraph qaItem1 = new Paragraph().add(new Text("Question 1?").setBold()).add("Answer 1"));
Paragraph qaItem1 = new Paragraph().add(new Text("Question 1?").setBold()).add("Answer 1"));
document.add(qaItem1);
document.add(qaItem2);
document.close();
您可以在 iText 7 ListItem
中应用不同的样式,方法是显式创建一个 Paragraph
包含具有不同样式的片段并将该段落添加到列表项:
Document document = new Document(pdfDocument))
List qaList = new List();
ListItem item = new ListItem();
Paragraph paragraph = new Paragraph();
paragraph.add(new Text("Question 1? ").setBold())
.add(new Text("Answer 1"))
.setMarginTop(0).setMarginBottom(0);
item.add(paragraph);
qaList.add(item);
item = new ListItem();
paragraph = new Paragraph();
paragraph.add(new Text("Question 2? ").setBold())
.add(new Text("Answer 2"))
.setMarginTop(0).setMarginBottom(0);
item.add(paragraph);
qaList.add(item);
document.add(qaList);
(StyledListItems 测试 testAddMultiStyledListItems
)
结果
顺便说一句,你之所以
get this (com.itextpdf.layout.element.Text@73df99a1) in place of the bold text
是在
qaList.add(new ListItem(new Text("Question 1?").setBold() + "Answer 1"));
你实际上执行了一个 String
连接,
new Text("Question 1?").setBold() + "Answer 1"
调用 new Text("Question 1?").setBold()
的结果对象的 toString()
并向此字符串添加 "Answer 1"
.
我使用 iText 7 创建了一个问题和答案列表,其中问题和答案都显示在列表的同一行中。我试图让问题变得粗体,同时用正常的字体粗细留下答案。当我 运行 代码类似于下面显示的内容时,我得到这个 (com.itextpdf.layout.element.Text@73df99a1) 代替粗体文本。是否可以在同一个 iText 7 ListItem 中获取不同粗细的字体?
String dest = "destination.pdf"
PdfWriter writer = new PdfWriter(dest);
PdfDocument pdf = new PdfDocument(writer);
Document document = new Document(pdf);
List qaList = new List();
qaList.add(new ListItem(new Text("Question 1?").setBold() + "Answer 1"));
qaList.add(new ListItem(new Text("Question 2?").setBold() + "Answer 2"));
document.add(qaList);
document.close();
iText 7 中似乎没有允许在 ListItem 中使用多种字体的功能。我通过放弃列表并为每个列表项使用一个段落来解决我的问题。
String dest = "destination.pdf"
PdfWriter writer = new PdfWriter(dest);
PdfDocument pdf = new PdfDocument(writer);
Document document = new Document(pdf);
Paragraph qaItem1 = new Paragraph().add(new Text("Question 1?").setBold()).add("Answer 1"));
Paragraph qaItem1 = new Paragraph().add(new Text("Question 1?").setBold()).add("Answer 1"));
document.add(qaItem1);
document.add(qaItem2);
document.close();
您可以在 iText 7 ListItem
中应用不同的样式,方法是显式创建一个 Paragraph
包含具有不同样式的片段并将该段落添加到列表项:
Document document = new Document(pdfDocument))
List qaList = new List();
ListItem item = new ListItem();
Paragraph paragraph = new Paragraph();
paragraph.add(new Text("Question 1? ").setBold())
.add(new Text("Answer 1"))
.setMarginTop(0).setMarginBottom(0);
item.add(paragraph);
qaList.add(item);
item = new ListItem();
paragraph = new Paragraph();
paragraph.add(new Text("Question 2? ").setBold())
.add(new Text("Answer 2"))
.setMarginTop(0).setMarginBottom(0);
item.add(paragraph);
qaList.add(item);
document.add(qaList);
(StyledListItems 测试 testAddMultiStyledListItems
)
结果
顺便说一句,你之所以
get this (com.itextpdf.layout.element.Text@73df99a1) in place of the bold text
是在
qaList.add(new ListItem(new Text("Question 1?").setBold() + "Answer 1"));
你实际上执行了一个 String
连接,
new Text("Question 1?").setBold() + "Answer 1"
调用 new Text("Question 1?").setBold()
的结果对象的 toString()
并向此字符串添加 "Answer 1"
.