Manipular Tabelas em PDF Existente

Manipular tabelas em PDF existente

Uma das primeiras funcionalidades suportadas pelo Aspose.PDF para Java são suas capacidades de Trabalhar com Tabelas e isso fornece um ótimo suporte para adicionar tabelas em arquivos PDF sendo gerados do zero ou em qualquer arquivo PDF existente. Você também obtém a capacidade de integrar a Tabela com o Banco de Dados (DOM) para criar tabelas dinâmicas com base no conteúdo do banco de dados. Nesta nova versão, implementamos um novo recurso de busca e análise de tabelas simples que já existem na página de um documento PDF. Uma nova classe chamada Aspose.PDF.Text.TableAbsorber fornece essas capacidades. O uso do TableAbsorber é muito semelhante à classe existente TextFragmentAbsorber.

O trecho de código a seguir mostra as etapas para atualizar o conteúdo em uma célula de tabela específica.

package com.aspose.pdf.examples;

import com.aspose.pdf.*;

public class ExampleManipulate {

    private static String _dataDir = "/home/admin1/pdf-exemplos/Samples/";

    public static void ManipulateTables() {

        // Carregar arquivo PDF existente
        Document pdfDocument = new Document(_dataDir + "input.pdf");
        // Criar objeto TableAbsorber para encontrar tabelas
        TableAbsorber absorber = new TableAbsorber();

        // Visitar a primeira página com o absorvedor
        absorber.visit(pdfDocument.getPages().get_Item(1));

        // Obter acesso à primeira tabela na página, sua primeira célula e fragmentos de texto nela
        TextFragment fragment = absorber.getTableList().get(0).getRowList().get(0).getCellList().get(0)
                .getTextFragments().get_Item(1);

        // Alterar texto do primeiro fragmento de texto na célula
        fragment.setText("olá mundo");

        pdfDocument.save(_dataDir + "ManipulateTable_out.pdf");
    }

Substituir a tabela antiga por uma nova no documento PDF

Caso você precise encontrar uma tabela específica e substituí-la pela desejada, você pode usar o método Replace() da Classe TableAbsorber para fazer isso.

O exemplo a seguir demonstra a funcionalidade de substituir a tabela dentro do documento PDF:

public static void ReplaceOldTableWithNew() {

        // Carregar documento PDF existente
        Document pdfDocument = new Document(_dataDir + "Table_input2.pdf");

        // Criar objeto TableAbsorber para encontrar tabelas
        TableAbsorber absorber = new TableAbsorber();

        Page page = pdfDocument.getPages().get_Item(1);

        // Visitar a primeira página com o absorvedor
        absorber.visit(page);

        // Obter a primeira tabela na página
        AbsorbedTable table = absorber.getTableList().get(0);

        // Criar nova tabela
        Table newTable = new Table();
        newTable.setColumnWidths("100 100 100");
        newTable.setDefaultCellBorder (new BorderInfo(BorderSide.All, 1F));

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

        // Substituir a tabela pela nova
        absorber.replace(page, table, newTable);

        // Salvar documento
        pdfDocument.save(_dataDir + "TableReplaced_out.pdf");
        
    }

}