Usando uma biblioteca do composer no scriptcase

Olá pessoal,

Estou trabalhando um um projeto onde preciso fazer o upload de um arquivo pdf e ao inserir, preciso extrair alguns dados (como: nº de páginas e edição do jornal) para gravar em uma tabela.
Busquei na internet e vi que existe uma biblioteca do composer, PDFParser, que retorna os dados do pdf.
Minha dúvida é, tem como usar uma biblioteca do composer no scriptcase?

Obrigada!

você pode baixar a biblioteca e usa-la sem o composer ou então configurar o composer no equipamento de desenvolvimento,

pode baixar por aqui:

https://github.com/smalot/pdfparser

É muito legal essa biblioteca.

Gosto para extrair código de barras de boleto, para fazer pesquisa em palavras chaves de um pdf.

1 Curtida

Olá Haroldo,

Vou fazer 2 perguntas que parecem óbvias, mas a questão é que estou começando agora a usar bibliotecas do composer.

Minhas dúvidas são:
1- No caso de baixar a biblioteca e usar sem o composer, preciso baixar o clone do PDFParser?

2- Eu já tenho o composer instalado na minha máquina com isso, não preciso baixar a biblioteca e usar como biblioteca externa no scriptcase?

Provavelmente você precisará modificar algum namespace da biblioteca para usar.
Vou ver se acho um exemplo aqui e te passo.

1 Curtida

É verdade o composer somente gerencia as dependências em PHP.
O pessoal acha que sem ele não dá para fazer nada.

1 Curtida

Obrigada pelo retorno Haroldo.
Porém ainda continua não funcionando pra mim.
Vou explicar detalhadamente o que fiz:

  • Primeiro eu fiz um clone do PDFParser no git;
  • Depois criei e ativei (user biblioteca) uma biblioteca externa e adicionei o clone zipado que baixei do git;
  • Em seguida, criei uma aplicação blank e inseri o seguinte código (um dos códigos de teste na pág. da própria biblioteca):

<?php
 
// Include Composer autoloader if not already done.
include 'vendor/autoload.php';
 
// Parse pdf file and build necessary objects.
$parser = new \Smalot\PdfParser\Parser();
$pdf    = $parser->parseFile('C:/Users/meu.usuario/Desktop/document.pdf');
 
$text = $pdf->getText();
echo $text;
 
?>

-Pra finalizar, executei a aplicação, mas infelizmente retornou o seguinte erro:

Parse error: syntax error, unexpected ‘<’ in D:\NetMake\v9\wwwroot\scriptcase\app\sistemaGedCmrj\teste_PDFParser\index.php on line 1626

Se você ou qualquer outro membro puder me ajudar, desde já agradeço muito.

Edito o arquivo gerado na publicação:
D:\NetMake\v9\wwwroot\scriptcase\app\sistemaGedCmrj\teste_PDFParser\index.php e vá na linha 1626. Nela e até um pouquinho antes poderá ter uma pista do que esta provocao este erro.
Ele diz que é inesperado o < .

To editando um vídeo que gravei pra te ajudar, de madrugada vai estar no meu canal. Te aviso aqui.

1 Curtida

@renata.rodrigues, você tem que usar a macro sc_include_library. Esta fará o include corretamente.

O Exemplo aqui está, mas vamos esperar o vídeo da @camilamoreira, vou achar isso interessante. Ela prometeu para hoje.

https://v9.infinitusweb.com.br/forum_sc/pdfparse_control/

O pdf de exemplo que utilizei:

Ontem deixei contato privado.

1 Curtida

Conforme prometido, com um pouco de atraso porque dormi cedo ontem, mas está aqui.

Link: https://youtu.be/2kUYkW0l2Bw

Não utilizo muito o composer, mas mostrei no vídeo a forma que utilizo e espero ter ajudado.

1 Curtida

Assiste e depois me diz se achou interessante.

3 Curtidas

Boa @camilamoreira sempre ajudando da melhor forma!! Muito bom mesmo

2 Curtidas

Muito Obrigada Camila!:raised_hands:
Salvou meu trabalho! Rs

E obrigada a todos que também contribuíram no tópico! :blush:

2 Curtidas

Não precisa agradecer, espero que consiga utilizar agora.

Fico a disposição. :wink:

Melhorou @InfinitusWeb ? rs

Att. Camila Moreira
www.camilamoreira.com.br

2 Curtidas

https://forum.scriptcase.com.br/guidelines#keep-tidy

1 Curtida

Boa noite, primeiramente agradeço a todos, pois suas publicações me ajudaram muito. Um obrigado à Camila pelos vídeos.

Segui as sugestões acima e obtive sucesso ao utilizar o PDFparser, porém apesar da maioria dos arquivos concluírem com Êxito a extração de conteúdo alguns outros, por algum motivo me retornam o seguinte erro:

Exceção: TCPDF_PARSER ERROR: dados em PDF vazios. em TCPDF_PARSER-> Erro () (linha 790 /pdfparser/vendor/tecnick.com/tcpdf/tcpdf_parser.php).

Sendo assim, a execução do meu script é parada e o conteúdo não é copiado, ainda que eu utilize o @ para ignorar os erros no código.
Versão 9.4.005

Agradeço se puderem me ajudar, segue o código…

include sc_url_library(‘prj’,‘PDFParser’,‘pdfparser/vendor/autoload.php’);

// Include Composer autoloader if not already done.
//include ‘vendor/autoload.php’;

// Parse pdf file and build necessary objects.
$parser = new \Smalot\PdfParser\Parser();
$arq=$local.$arquivo;
$pdf = $parser->parseFile($arq);

$text = @$pdf->getText();
$text=str_replace("’", ‘"’, $text);

echo $text;

1 Curtida

Dependendo do conteúdo do arquivo a biblioteca pdfparser não consegue extrair os dados.

Obrigado pela resposta Aroldo, como posso fazer para validar esse pdf antes de urtilizar a função. dessa forma evito o erro e posso exibir um aviso ao usuário. Existe a possibilidade?

Só investigando.

Analisar a documentação do pdfparser

Boa tarde a todos. Utilizei essa dica e consegui obter alguns resultados, porém alguns arquivos não estão sendo lidos pela bibliioteca. a solução que encontrei foi abrir o arquivo usando o adobe reader e salva-lo novamente. Funciona!
O problema é que esse procedimento é horrível para o usuário final. então gostaria de saber se tem alguma outra biblioteca que faça o mesmo trabalho mas consiga fazer a leitura de uma gama maior de codificações ou versões?