我用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();发布于 2018-07-27 16:04:22
您可以在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);(https://github.com/mkl-public/testarea-itext7/blob/master/src/test/java/mkl/testarea/itext7/content/StyledListItems.java#L38 test 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(),并对此字符串添加"Answer 1"。
发布于 2018-07-26 17:42:57
在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();https://stackoverflow.com/questions/51529747
复制相似问题