기존 PDF 문서의 표 조작

기존 테이블을 찾고 해당 내용을 업데이트해야 하는 경우 TableAbsorber를 사용하세요.

표 셀 내부의 텍스트 바꾸기

전체 테이블을 다시 작성하지 않고 감지된 셀의 텍스트를 업데이트해야 하는 경우 이 예를 사용하세요.

  1. 원본 PDF Document를 열고 TableAbsorber가 있는 페이지를 방문하세요.
  2. 대상 테이블과 셀 텍스트 조각이 존재하는지 확인하세요.
  3. 셀 텍스트를 바꾸고 업데이트된 문서를 저장하세요.
public static void replaceCells(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        TableAbsorber absorber = new TableAbsorber();
        absorber.visit(document.getPages().get_Item(1));

        if (absorber.getTableList().isEmpty()) {
            throw new IllegalStateException("No tables were found on page 1.");
        }
        if (absorber.getTableList().get(0).getRowList().get(0).getCellList().get(0).getTextFragments().size() == 0) {
            throw new IllegalStateException("The target cell has no text fragments.");
        }

        absorber.getTableList().get(0).getRowList().get(0).getCellList().get(0)
                .getTextFragments().get_Item(1).setText("New Value");
        document.save(outputFile.toString());
    }
}

감지된 테이블을 새 테이블로 교체

원래 테이블을 새로 생성된 테이블로 완전히 교체해야 하는 경우 이 예를 사용하세요.

  1. 원본 PDF Document를 열고 페이지에서 테이블을 검색하세요.
  2. 원하는 구조로 새 Table을 생성하세요.
  3. 흡수된 테이블을 교체하고 출력 PDF를 저장하세요.
public static void replaceTable(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        TableAbsorber absorber = new TableAbsorber();
        absorber.visit(document.getPages().get_Item(1));

        if (absorber.getTableList().isEmpty()) {
            throw new IllegalStateException("No tables were found on page 1.");
        }

        AbsorbedTable oldTable = absorber.getTableList().get(0);
        Table newTable = new Table();
        newTable.setColumnWidths("100 100 100");
        newTable.setDefaultCellBorder(new BorderInfo(BorderSide.All, 1.0f));

        Row row = newTable.getRows().add();
        row.getCells().add("Col 1");
        row.getCells().add("Col 2");
        row.getCells().add("Col 3");
        row = newTable.getRows().add();
        row.getCells().add("Col 12");
        row.getCells().add("Col 22");
        row.getCells().add("Col 32");

        absorber.replace(document.getPages().get_Item(1), oldTable, newTable);
        document.save(outputFile.toString());
    }
}