问题描述
我想创建一个pdf报告,其中在生成报告时仅需要突出显示某些文本。
我当前的代码
private static Text returnCorrectColor(String letter,String htext,PdfFont helveticaFont,PdfFont helveticaBoldFont) {
ArrayList<String>htextaslist = new ArrayList<>(Arrays.asList(htext.trim().split("\\r?\\n")));
String v=StringUtils.normalizeSpace( htext.trim());
Boolean flag=false;
try {
for (int i=0;i<htextaslist.size();i++) {
System.out.println("entire linr"+letter);
System.out.println("htext"+htextaslist.get(i));
if (letter.trim().contains(htextaslist.get(i).trim())) {
System.out.println("boolran"+"0inside");
flag=true;
if(flag)
{
break;
}
}
else {
flag=false;
}
}
} catch (PatternSyntaxException e) {
// TODO: handle exception
flag=true;
}
if(flag) {
return new Text(letter)
.setBackgroundColor(Color.GREEN)
.setFontColor(Color.BLACK)
.setFont(helveticaBoldFont);
} else {
return new Text(String.valueOf(letter))
.setFontColor(Color.BLACK)
.setFont(helveticaFont);
}
}
我可以突出显示整行,但是我需要突出显示特定的文本,即“ htext”,仅在一行中突出显示。
我不对段落中的数据进行硬编码 我在for循环中调用此方法,例如
outputaslist = new ArrayList<>(Arrays.asList(output.split("\\r?\\n")));
for (int s = 0; s < outputaslist.size(); s++) {
paragraph.add(returnCorrectColor(outputaslist.get(s),testcaselist.get(i).getHtext(),helveticaFont,helveticaBoldFont));
paragraph.add("\n");
}
有什么办法吗?
我的一个示例输入
outputActive Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN
1185/systemd-resolv
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1441/cupsd
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1780/nginx: master
tcp 0 0 127.0.0.1:35373 0.0.0.0:* LISTEN 1616/containerd
tcp 0 0 10.10.100.242:51938 13.33.60.102:443 TIME_WAIT -
tcp 0 0 10.10.100.242:52762 34.210.242.116:443 ESTABLISHED 6994/firefox
我只想突出显示输出中的收听内容
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)