Extrair Dados de Tabela de PDF

Extrair Tabelas de PDF programaticamente

Extrair tabelas de PDFs não é uma tarefa trivial porque a tabela pode ser criada de várias maneiras.

Aspose.PDF para PHP via Java tem uma ferramenta para facilitar a recuperação de tabelas. Para extrair dados de tabela, você deve realizar as seguintes etapas:

  1. Abra o documento PDF - instancie um objeto Document;

  2. Crie um objeto TableAbsorber TableAbsorber para extrair tabelas do documento.

  3. Itere através de cada página do documento.

  4. Decida quais páginas serão analisadas e aplique visit nas páginas desejadas. Os dados tabulares serão escaneados e o resultado será salvo em uma lista de AbsorbedTable. Podemos obter essa lista através do método getTableList.

  5. Para obter os dados, itere através de TableList e manipule a lista de absorbed rows e a lista de células absorvidas. Podemos acessar a primeira lista chamando o método getTableList e a segunda chamando o método getCellList.

  6. Cada AbsorbedCell contém TextFragmentCollections. Você pode processá-lo para seus próprios propósitos.

O exemplo a seguir mostra a extração de tabelas de todas as páginas:


$document = new Document($inputFile);
$tableAbsorber = new TableAbsorber();


for ($pageIndex = 1; $pageIndex <= java_values($pages->size()); $pageIndex++) {
    $page = $pages->get_Item($pageIndex);
    $tableAbsorber->visit($page);
    $tableList = $tableAbsorber->getTableList();
    $tableIterator = $tableList->iterator();

    while (java_values($tableIterator->hasNext())) {
        $table = $tableIterator->next();
        $tableRowList = $table->getRowList();
        $tableRowListIterator = $tableRowList->iterator();

        while (java_values($tableRowListIterator->hasNext())) {
            $row = $tableRowListIterator->next();
            $cellList = $row->getCellList();
            $cellListIterator = $cellList->iterator();

            // Iterar através de cada célula na linha.
            while (java_values($cellListIterator->hasNext())) {
                $cell = $cellListIterator->next();
                $fragmentList = $cell->getTextFragments();

                // Iterar através de cada fragmento de texto na célula.
                for ($fragmentIndex = 1; $fragmentIndex <= java_values($fragmentList->size()); $fragmentIndex++) {
                    $fragment = $fragmentList->get_Item($fragmentIndex);
                    $segments = $fragment->getSegments();

                    // Iterar através de cada segmento no fragmento de texto.
                    for ($segmentIndex = 1; $segmentIndex <= java_values($segments->size()); $segmentIndex++) {
                        $segment = $segments->get_Item($segmentIndex);
                        $responseData .= $segment->getText();
                    }
                }
                $responseData .= "|";
            }
            $responseData .= PHP_EOL;
        }
    }
}

// Salvar os dados da tabela no arquivo de saída.
file_put_contents($outputFile, $responseData);

// Fechar o documento PDF.
$document->close();

Extrair Dados da Tabela de PDF e armazená-los em arquivo CSV

O exemplo a seguir mostra como extrair uma tabela e armazená-la como um arquivo CSV. Para ver como converter PDF para Planilha Excel, consulte o artigo Converter PDF para Excel.


    // Carregar o documento PDF de entrada usando a classe Document.
    $document = new Document($inputFile);

    // Criar uma instância da classe ExcelSaveOptions para especificar as opções de salvamento.
    $saveOption = new ExcelSaveOptions();

    // Definir o formato de saída para CSV.
    $saveOption->setFormat(ExcelSaveOptions_ExcelFormat::$CSV);

    // Salvar o documento PDF como um arquivo Excel usando as opções de salvamento especificadas.
    $document->save($outputFile, $saveOption);