首页 > 解决方案 > 使用 itext7 突出显示 pdf 文档中的特定单词

问题描述

我想创建一个 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        

我想在输出中强调只听

标签: javaitext7

解决方案


推荐阅读