我使用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();
最佳答案
通过显式创建一个包含不同样式的作品的ListItem
并将该段落添加到列表项,可以在iText 7 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
)结果是
顺便说一句,你为什么
将此文本(com.itextpdf.layout.element.Text@73df99a1)替换为粗体
在那
qaList.add(new ListItem(new Text("Question 1?").setBold() + "Answer 1"));
您实际上执行了
String
串联,new Text("Question 1?").setBold() + "Answer 1"
调用
toString()
的结果对象的new Text("Question 1?").setBold()
,并向此String添加"Answer 1"
。关于java - 如何使用iText列表将具有不同权重的文本添加到单个ListItem,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51529747/