我使用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

结果是

java - 如何使用iText列表将具有不同权重的文本添加到单个ListItem-LMLPHP



顺便说一句,你为什么


  将此文本(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/

10-16 20:42