首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ListItem列表向单个iText添加不同权重的文本

如何使用ListItem列表向单个iText添加不同权重的文本
EN

Stack Overflow用户
提问于 2018-07-26 01:30:40
回答 2查看 2K关注 0票数 2

我用iText 7创建了一个问答列表,其中问题和答案都显示在列表的同一行中。我试图使问题大胆的同时,留下的答案与正常的字体重量。当我运行类似于下面所示的代码时,我会得到这个(com.itextpdf.layout.element.Text@73df99a1)来代替粗体文本。是否有可能在同一个iText 7 ListItem中获得不同权重的字体?

代码语言:javascript
复制
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();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-27 16:04:22

您可以在iText 7 ListItem中应用不同的样式,方法是显式创建包含具有不同样式的片段的Paragraph,并将该段添加到列表项中:

代码语言:javascript
复制
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)代替粗体文本

那是在

代码语言:javascript
复制
qaList.add(new ListItem(new Text("Question 1?").setBold() + "Answer 1"));

您实际上执行了String连接,

代码语言:javascript
复制
new Text("Question 1?").setBold() + "Answer 1"

调用结果对象toString()new Text("Question 1?").setBold(),并对此字符串添加"Answer 1"

票数 7
EN

Stack Overflow用户

发布于 2018-07-26 17:42:57

在iText 7中似乎没有允许在ListItem中使用多种字体的功能。我解决了我的问题,放弃了列表,而是为每个列表项目使用了一个段落。

代码语言:javascript
复制
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();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51529747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档