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:
-
Abra o documento PDF - instancie um objeto Document;
-
Crie um objeto TableAbsorber TableAbsorber para extrair tabelas do documento.
-
Itere através de cada página do documento.
-
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.
-
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. -
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);