ALIGN_JUSTIFIED 用于 iText 列表项
ALIGN_JUSTIFIED for iText list item
我想通过编写此代码来设置列表项的对齐方式 -
ListItem alignJustifiedListItem =
new ListItem(bundle.getString(PrintKeys.AckProcess), normalFont8);
alignJustifiedListItem.setAlignment(Element.ALIGN_JUSTIFIED);
我看到这不会对对齐方式进行任何更改(默认为左对齐)。将其更改为
alignJustifiedListItem.setAlignment(Element.ALIGN_JUSTIFIED_ALL);
实际上有效,但内容的最后一行也会扩展(也如文档中所述)
我不明白什么时候 ListItem
扩展 Paragraph
,setAlignment()
行为会如何改变。我也没有看到任何覆盖。
请查看 ListAlignment 示例。
在此示例中,我创建了一个包含三个列表项的列表,我将其对齐方式设置为 ALIGN_JUSTIFIED
:
List list = new List(List.UNORDERED);
ListItem item = new ListItem(text);
item.setAlignment(Element.ALIGN_JUSTIFIED);
list.add(item);
text = "a b c align ";
for (int i = 0; i < 5; i++) {
text = text + text;
}
item = new ListItem(text);
item.setAlignment(Element.ALIGN_JUSTIFIED);
list.add(item);
text = "supercalifragilisticexpialidocious ";
for (int i = 0; i < 3; i++) {
text = text + text;
}
item = new ListItem(text);
item.setAlignment(Element.ALIGN_JUSTIFIED);
list.add(item);
document.add(list);
如果您查看结果,您会发现对齐按预期工作:
我特意引入了一个很长的词,比如"supercalifragilisticexpialidocious",让你知道除了最后一行之外的所有行都是合理的。
更新:
在评论中,您在引入 \
字符时声称对齐错误,并希望我修复 iText。但是,没有什么可以解决的。
我把原来的例子改编成这样:
text = "a b c align ";
for (int i = 0; i < 5; i++) {
text = text + "\" + text;
}
item = new ListItem(text);
item.setAlignment(Element.ALIGN_JUSTIFIED);
list.add(item);
text = "supercalifragilisticexpialidocious ";
text = text + text;
text = text + text;
text = text + "\n" + text;
item = new ListItem(text);
item.setAlignment(Element.ALIGN_JUSTIFIED);
list.add(item);
在第一种情况下,我引入了\
这个字符。这并没有改变 ListItem
的行为。在第二种情况下,我引入了一个换行符。结果和预想的一样:引入了换行符,换行符定义的每个"paragraph"的最后一行确实不合理。这是人们通常所期望的。如果我要更改它,我会引入一个错误。
这是结果的屏幕截图:
在 "a b c align "
行中引入 '\'
字符对对齐没有任何影响。在 "supercalifragilisticexpialidocious "
部分中间引入换行符将列表项分成两部分。每个部分的最后一行都没有对齐,这是期望的行为。
如果您不希望出现这种行为,则必须先解析内容并删除所有换行符(回车符 return 和换行符)。
更新:
在新评论中,您提到 '\'
字符作为 '''
字符(实际上是 \'
字符)的转义字符。我再次改编了原来的例子:
text = "a b c\' align ";
for (int i = 0; i < 5; i++) {
text = text + text;
}
item = new ListItem(text);
item.setAlignment(Element.ALIGN_JUSTIFIED);
list.add(item);
结果如下所示:
文本正确对齐。但是,我可以想象,如果您不正确地处理带有转义字符的 String
,就会出现问题。在这种情况下,'\''
字符被硬编码。如果您从数据库中获取 String
而您读取的 String
不正确,那么您可能会得到奇怪的结果。特别是在我作为 PHP 开发人员的日子里,我记得如果你不注意的话,单引号最终会像这样 '\\''
存储在数据库中。
我想通过编写此代码来设置列表项的对齐方式 -
ListItem alignJustifiedListItem =
new ListItem(bundle.getString(PrintKeys.AckProcess), normalFont8);
alignJustifiedListItem.setAlignment(Element.ALIGN_JUSTIFIED);
我看到这不会对对齐方式进行任何更改(默认为左对齐)。将其更改为
alignJustifiedListItem.setAlignment(Element.ALIGN_JUSTIFIED_ALL);
实际上有效,但内容的最后一行也会扩展(也如文档中所述)
我不明白什么时候 ListItem
扩展 Paragraph
,setAlignment()
行为会如何改变。我也没有看到任何覆盖。
请查看 ListAlignment 示例。
在此示例中,我创建了一个包含三个列表项的列表,我将其对齐方式设置为 ALIGN_JUSTIFIED
:
List list = new List(List.UNORDERED);
ListItem item = new ListItem(text);
item.setAlignment(Element.ALIGN_JUSTIFIED);
list.add(item);
text = "a b c align ";
for (int i = 0; i < 5; i++) {
text = text + text;
}
item = new ListItem(text);
item.setAlignment(Element.ALIGN_JUSTIFIED);
list.add(item);
text = "supercalifragilisticexpialidocious ";
for (int i = 0; i < 3; i++) {
text = text + text;
}
item = new ListItem(text);
item.setAlignment(Element.ALIGN_JUSTIFIED);
list.add(item);
document.add(list);
如果您查看结果,您会发现对齐按预期工作:
我特意引入了一个很长的词,比如"supercalifragilisticexpialidocious",让你知道除了最后一行之外的所有行都是合理的。
更新:
在评论中,您在引入 \
字符时声称对齐错误,并希望我修复 iText。但是,没有什么可以解决的。
我把原来的例子改编成这样:
text = "a b c align ";
for (int i = 0; i < 5; i++) {
text = text + "\" + text;
}
item = new ListItem(text);
item.setAlignment(Element.ALIGN_JUSTIFIED);
list.add(item);
text = "supercalifragilisticexpialidocious ";
text = text + text;
text = text + text;
text = text + "\n" + text;
item = new ListItem(text);
item.setAlignment(Element.ALIGN_JUSTIFIED);
list.add(item);
在第一种情况下,我引入了\
这个字符。这并没有改变 ListItem
的行为。在第二种情况下,我引入了一个换行符。结果和预想的一样:引入了换行符,换行符定义的每个"paragraph"的最后一行确实不合理。这是人们通常所期望的。如果我要更改它,我会引入一个错误。
这是结果的屏幕截图:
在 "a b c align "
行中引入 '\'
字符对对齐没有任何影响。在 "supercalifragilisticexpialidocious "
部分中间引入换行符将列表项分成两部分。每个部分的最后一行都没有对齐,这是期望的行为。
如果您不希望出现这种行为,则必须先解析内容并删除所有换行符(回车符 return 和换行符)。
更新:
在新评论中,您提到 '\'
字符作为 '''
字符(实际上是 \'
字符)的转义字符。我再次改编了原来的例子:
text = "a b c\' align ";
for (int i = 0; i < 5; i++) {
text = text + text;
}
item = new ListItem(text);
item.setAlignment(Element.ALIGN_JUSTIFIED);
list.add(item);
结果如下所示:
文本正确对齐。但是,我可以想象,如果您不正确地处理带有转义字符的 String
,就会出现问题。在这种情况下,'\''
字符被硬编码。如果您从数据库中获取 String
而您读取的 String
不正确,那么您可能会得到奇怪的结果。特别是在我作为 PHP 开发人员的日子里,我记得如果你不注意的话,单引号最终会像这样 '\\''
存储在数据库中。