MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Importar Texto do PDF para String

    Compartilhe

    Ednardo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 15
    Registrado : 20/11/2015

    [Resolvido]Importar Texto do PDF para String

    Mensagem  Ednardo em Sab 01 Abr 2017, 01:28

    Boa Noite

    Depois de vasculhar o fórum inteiro, não achei nada que pudesse adaptar a minha realidade, ao menos nada que não gera-se algum erro em tempo de execução que eu conseguisse resolver, pois bem...

    Trabalho em uma loja de Fast Food com um sistema de Delivery Chamado "ifood", preciso importar as informações dos pedidos que chegam nele para o meu banco de dados access, pensei em umas três maneiras possíveis e deixei a que pensei ser mais fácil por último, porém não consegui sucesso em nenhumas delas, primeiro pesquisei como copiar o texto da tela de um programa aberto para uma string para poder manipula-lo, achei que seria fácil usando API's mais parece ser mais complexo do que se imagina, não se consegue muita coisa na internet pois os experts pensam que pessoas querendo esse tipo de informação querem rakear algum sistema criando um KeyLogger ou algo parecido, parti para a segunda ideia que seria interceptar a impressão do pedido do sistema extraindo assim o texto que seria impresso para minha string, mais complexo ainda porque não é possível criar impressora virtuais no access só em C# e outras linguagem ao que me parece, então pensei vou no fórum pesquisar o mais fácil e parar de quebrar a cabeça que seria imprimir o pedido do sistema em uma impressora virtual que gera PDF como por exemplo CutPDF Writer ou até mesmo a própria do Windows "Microsoft Print to PDF" de posse do arquivo PDF com o texto preciso vou em busca de uma função em VBA para extrair o texto do PDF para uma String ou até mesmo para um arquivo Txt, e simplesmente não consigo, a dias que tento incessantemente sem êxito, tem exemplos no repositório para transformar txt em PDF preciso justamente ao contrario, PDF para txt, pensei que seria uma coisa muito simples, por isso estou pedido ajuda aos colegas, que se puderem me ajudar a concluir esse trabalho facilitar a minha vida em muito, o meu sistema tem a logística certa para o meu tipo de operação, porém preciso da informação de outro sistema para alimenta-lo preciso simplesmente extrair o texto de um PDF, se alguém puder me ajudar agradeço imensuravelmente.
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3415
    Registrado : 14/08/2013

    Re: [Resolvido]Importar Texto do PDF para String

    Mensagem  FabioPaes em Sab 01 Abr 2017, 16:00

    Amigo, aqui no fórum encontrará tópicos com o termo Importar dados de arquivo PDF. Porem não e nada fácil, e na maioria das vezes é mais facil importar de um arquivo .txt.
    Porem eu desconheço um conversor de PDF>.txt no Access. Existem outro programas com esse fim, mas sao todos pagos. Ou ate conversoes online, que considero inseguro por esta enviando os dados a servidores que nem sei de onde são!

    Em alguns casos é mais fácil você abri o PDF selecionar todo o Texto e Colar em uma Caixa de Texto de um Formulário... e Daee trabalhar os dados. Ja me utilizei desse método... Copiava todo o Texto de um relatório, colava em um caixa de texto access e processava ele utilizando a função do Ahteixeita SeparaXMLentreestring.


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    Ednardo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 15
    Registrado : 20/11/2015

    Exportar Texto do PDF para String

    Mensagem  Ednardo em Sab 01 Abr 2017, 19:09

    É exatamente isso que eu quero, só trocaria uma caixa de texto por uma string, porém esse processo de abertura do PDF e cópia do texto teria que ser automatizado, nada manual entende? Se tiver como postar essa função aqui ou mandar o link do tópico eu agradeceria muito porque não consigo fazer buscas no fórum, nunca consigo achar o que busco sem ser através do google.
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3415
    Registrado : 14/08/2013

    Re: [Resolvido]Importar Texto do PDF para String

    Mensagem  FabioPaes em Sab 01 Abr 2017, 21:27

    A função é essa:

    Código:

    Function separaEntreDuasStringsXML(strTotal As String, strInicio As String, strFim As String)
    '                 2014 Alvaro Teixeira                          '
    '                Adaptado por Fabio Paes                        '
    '           Em 12/02/2017 para MAXIMOACCESS                     '

    Dim strP As String
    On Error Resume Next
    Dim i As Long, j As Long
    i = InStr(strTotal, strInicio)
        'Aqui ele separa o Texto para determinar o Fim da Extração.
        strP = Mid(strTotal, i + (Len(strInicio)), Len(strTotal))
        j = InStr(strP, strFim)
        separaEntreDuasStringsXML = Mid(strTotal, i + Len(strInicio), j - 1)
        If Nz(Len(separaEntreDuasStringsXML), 0) = 0 Then
            separaEntreDuasStringsXML = 0
        End If
    End Function

    Chame a função assim:

    separaEntreDuasStringsXML(xProd, "< uCom >", "< /uCom >")

    xProd String onde tem o Texto a ser Extraido
    < uCom > é o Delimitador de Inicio da Extração
    < /uCom > é o Delimitador Fim da Extração.

    Exemplo para a linha a cima:

    xProd= Qualquer texto... xxsdskdjsdkjsjdh < uCom > Esse é o texto que me interessa < /uCom> fim valor da String

    Será extraído apenas o valor: Esse é o texto que me interessa


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    Ednardo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 15
    Registrado : 20/11/2015

    Re: [Resolvido]Importar Texto do PDF para String

    Mensagem  Ednardo em Dom 02 Abr 2017, 03:26

    Amigo desculpe minha falta de conhecimento, mais não consegui entender como posso aplicar essa função em um PDF para extrair seu texto para uma caixa de texto do meu form, será possível adaptar?
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3415
    Registrado : 14/08/2013

    Re: [Resolvido]Importar Texto do PDF para String

    Mensagem  FabioPaes em Dom 02 Abr 2017, 20:21

    Não amigo, essa função e para separação de dados...
    O PDF terá que ser convertido para .txt e então sera feito a leitura de txt e utilizado a função para extrair. Pesquise por: Importar TXT

    Lendo direto o PDF eu desconheço algo que faça isso!



    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    Ednardo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 15
    Registrado : 20/11/2015

    Re: [Resolvido]Importar Texto do PDF para String

    Mensagem  Ednardo em Dom 02 Abr 2017, 21:21

    OK, acontece que a conversão de PDF para TXT terá que ser automatizado, nada manual entende, tudo através do VBA, Manipular o TXT eu sei, estou quase chegando em uma maneira de extrair o texto do PDF, se conseguir posto aqui a solução ou se faltar algum detalhe eu irei expor aqui pra tentar a char a solução...

    Ednardo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 15
    Registrado : 20/11/2015

    Re: [Resolvido]Importar Texto do PDF para String

    Mensagem  Ednardo em Seg 03 Abr 2017, 12:04

    Bom dia, finalmente depois de uma semana consegui chegar na resolução do meu problema, deixarei aqui para poder ajudar outros que como eu que precisam de uma solução igual ou similar a minha...

    Primeiro será necessário ter instalado na máquina uma versão full e pro do Adobe Reader, a versão que estou usando é "Adobe Acrobat Pro DC 2016", após instalado terá que fazer referência a seguinte biblioteca "Adobe Acrobat 10.0 Type Library" que faz referência ao arquivo "Acrobat.tlb", feito isso insira o seguinte código e adapte a sua realidade...

    Dim objPDFPage As AcroPDPage
    Dim objPDFDoc As New AcroPDDoc
    Dim objPDFAVDoc As AcroAVDoc
    Dim objAcroApp As AcroApp
    Dim objPDFRectTemp As Object
    Dim objPDFRect As New AcroRect
    Dim lngTextRangeCount As Long
    Dim objPDFTextSelection As AcroPDTextSelect
    Dim temptextcount As Long
    Dim strText As String

    Dim lngPageCount As Long
    Dim Page As Long

    objPDFDoc.Open ("C:\SeuArquivo.pdf")

    lngPageCount = objPDFDoc.GetNumPages

    For Page = 0 To lngPageCount - 1

    Set objPDFPage = objPDFDoc.AcquirePage(Page)
    Set objPDFRectTemp = objPDFPage.GetSize
    objPDFRect.Left = 0
    objPDFRect.Right = objPDFRectTemp.x
    objPDFRect.Top = objPDFRectTemp.y
    objPDFRect.bottom = 0

    Set objPDFTextSelection = objPDFDoc.CreateTextSelect(Page, objPDFRect)

    temptextcount = objPDFTextSelection.GetNumText
    For lngTextRangeCount = 1 To objPDFTextSelection.GetNumText
    doctextdoctext = doctext & objPDFTextSelection.GetText(lngTextRangeCount - 1)

    strText = strText & doctextdoctext

    Next

    doctextdoctext = doctext & vbCrLf

    Next
    1
    bdoctype = "PDF"


    Essa função abrirá o documento em segundo plano, selecionará todo o texto de todas as páginas existentes no PDF, copia e transfere para a String "strText" e !!!Voilà!!! você terá todo o texto do PDF em uma string para manipular como quiser dentro do seu banco de dados, daí é só estudar as técnicas de manipulação de strings para poder extrair exatamente o que precisa!!!

    Abraço a todos e bons estudos.

    Ednardo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 15
    Registrado : 20/11/2015

    Re: [Resolvido]Importar Texto do PDF para String

    Mensagem  Ednardo em Seg 03 Abr 2017, 12:09

    Obs: insira uma função para selecionar um arquivo e capturar seu caminho completo para automatizar todo o processo para o usuário final de acordo com a necessidade do procedimento...
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3415
    Registrado : 14/08/2013

    Re: [Resolvido]Importar Texto do PDF para String

    Mensagem  FabioPaes em Seg 03 Abr 2017, 20:48

    Que bom que conseguiu! É uma pena que so funcione com a versão Paga do Adobe.

    Tetei aqui com versão Read e deu erro ao abrir o arquivo.


    Grato pelo retorno amigo, até a próxima se Deus Quiser!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

      Data/hora atual: Ter 21 Nov 2017, 10:10