使用java代码删除空行

时间:2016-09-08 20:44:14

标签: java pdf

以下是我的Java代码,用于创建PDF并在PDF文档中打印内容。我在打印行之间有空行,如下面的代码所示。如果在打印的语句后面有两个以上的空白行,只需写一个空白行并省略其他空白行以写入PDF文档。因此,如果有一个或两个空白行,我可以按原样打印它,但是如果有更多,那么删除所有额外的空白行,只需使用Java代码添加一个空白行。我正在使用Java版本5.请建议。

    public static void main(String args[]) {
        Document document = null;
        FileOutputStream fos = null;

        try {
            final String prefix = "test";
            final File temporaryPDF = File.createTempFile(prefix, ".pdf");
            document = new Document(PageSize.LETTER);

            fos = new FileOutputStream(temporaryPDF);

            PdfWriter.getInstance(document, fos);
            document.open();

            Font font = new Font(Font.FontFamily.COURIER, 10);

            List<String> lines = new ArrayList<String>();
            lines.add("This is first line.");
            lines.add("This is second line.");
            lines.add(" ");
            lines.add(" ");
            lines.add(" ");
            lines.add(" ");
            lines.add("This is third printed line.");
            lines.add(" ");
            lines.add("This is fourth printed line.");
            lines.add(" ");
            lines.add(" ");
            lines.add(" ");
            lines.add("#ACC004342-123");
            lines.add(" ");
            lines.add(" ");
            lines.add(" ");
            lines.add(" ");
            lines.add(" ");
            lines.add(" ");
            lines.add("More information:");
            lines.add("This is fifth printed line.");
            lines.add("#ACC004342-123");
            lines.add("");
            lines.add("This is Sixth printed line.");
            lines.add("Some information goes here.");

            for (final String line : lines) {
                document.add(new Paragraph(12, line, font));
            }

            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
}
PS:我再次提出这篇文章是为了更清晰。感谢。

1 个答案:

答案 0 :(得分:0)

这是一个应该解决问题的最小答案。我确实将代码减少到必要的部分,因为我需要自己测试它,而且我无法访问你使用过的类。

在提问时,您应该尽可能将问题中的代码设为minimal,以便重新创建。

public static void main(String args[]) {
    List<String> lines = new ArrayList<String>();
    lines.add("This is first line.");
    lines.add("This is second line.");
    lines.add(" ");
    lines.add(" ");
    lines.add(" ");
    lines.add(" ");
    lines.add("This is third printed line.");
    lines.add(" ");
    lines.add("This is fourth printed line.");
    lines.add(" ");
    lines.add(" ");
    lines.add(" ");
    lines.add("#ACC004342-123");
    lines.add(" ");
    lines.add(" ");
    lines.add(" ");
    lines.add(" ");
    lines.add(" ");
    lines.add(" ");
    lines.add("More information:");
    lines.add("This is fifth printed line.");
    lines.add("#ACC004342-123");
    lines.add("");
    lines.add("This is Sixth printed line.");
    lines.add("Some information goes here.");

    //count empty lines
    int emptyLineCounter = 0; 

    for (final String line : lines) {
        //when empty line increment counter, else reset counter
        if(line.trim().length() == 0) 
            emptyLineCounter++;
        else
            emptyLineCounter = 0;

        //when more then 2 empty lines are encountered move ignore line
        if(emptyLineCounter <= 2)
            System.out.println(line); //add line to document
    }
}

编辑:其他人写错了答案是不提供minimal, complete and verifiable代码的直接结果。