Converter site/pdf

Aqui é o lugar para bater papo e trocar idéias sobre os mais variados assuntos

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Converter site/pdf

Mensagem por JoséQuintas »

Preciso fazer o seguinte:

1. Converter o conteúdo do PDF em texto e/ou dbf
Sony RMVZL620 Codes.pdf
(196.18 KiB) Baixado 83 vezes
2. Mesma coisa com esta página

https://www.sony.com/electronics/suppor ... te_codes_i

O PDF tem código que o site não tem, e vice-versa, e já usei dos dois.
Se o site desaparecer, lá se vão os códigos.

Alguma dica sobre como fazer isso?
No site parece Jason, mas não sei dizer, porque não mexo com isso, é apenas chute.

É do controle remoto Sony, aparelhos que ele pode controlar, e depende de colocar o código correto.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Converter site/pdf

Mensagem por Toledo »

Quintas, você pode fazer o seguinte:

PDF para texto, veja este site:

https://pdftotext.com

Agora Site para texto, você pode fazer o seguinte:

1 - Entre no site e depois clique com o botão da direita do mouse sobre a página do site e escolha a opção "Salvar Página como...", ai na janela que vai abrir, você pode escolher o Tipo de arquivo você deseja salvar, onde tem opção para salvar como Arquivo Texto (txt).
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Converter site/pdf

Mensagem por JoséQuintas »

Lembrei disso......
Deu um trabalhinho.... mas tava tudo num jason.
Agora falta criar o que interessa.

O fonte cria o texto do hash, e mostra de forma "humana", de como seria usado no fonte.

Tem a função que usei pra converter a string em um fonte PRG
Tem a minha rotina de mostrar como seria usado o hash no fonte.
test.zip
(19.25 KiB) Baixado 73 vezes
A rotina de mostrar, mostra algo deste tipo:
testjason.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Converter site/pdf

Mensagem por JoséQuintas »

remotecode.png
Pra quem não viu....

Tem 12 tipos de aparelho, em cada aparelho é escolher o fabricante, e conforme a escolha, mostra os códigos para programação.
É que controle remoto, sem o manual de como configurar, não é útil.
E mais fácil selecionar por um menu desse tipo, do que procurar numa lista gigantesca, com letras miúdas.

É daquele controle remoto que veio da China, mas que é Sony.
Vai que a Sony tira do ar, melhor garantir.

O próximo passo é como criar o fonte da seleção.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Converter site/pdf

Mensagem por JoséQuintas »

Não pensei que ia ser tão rápido.
Usei como referência a janela anterior, aonde mostra a "nomenclatura" do acesso.
Isso mostra o que já comentei: Seja HASH ou Jason convertido, é tudo array, e acessa igual array, ou por nome ou por número.
TUDO direto no Hash array retornado do hb_JsonDecode()
Mas pra ficar bom... precisa ser em tbrowse, porque em prompt não cabe na tela.

Código: Selecionar todos

#include "inkey.ch"

PROCEDURE Main

   LOCAL cTxt, aHash
   LOCAL oAparelho, nOpcAparelho := 1
   LOCAL oFabricante, nOpcFabricante := 1
   LOCAL oCode

   SetMode(30,100)
   CLS
   cTxt := JasonList() // Memoread( "remote.html" )
   aHash := hb_jsonDecode( cTxt )

   DO WHILE .T.
      @ 0, 30 CLEAR TO MaxRow(), MaxCol()
      FOR EACH oAparelho IN aHash[ "devices" ]
         @ oAparelho:__EnumIndex, 1 PROMPT oAparelho[ "device" ]
      NEXT
      MENU TO nOpcAparelho
      IF Lastkey() == K_ESC
         EXIT
      ENDIF
      DO WHILE .T.
         @ 0, 60 CLEAR TO MaxRow(), MaxCol()
         FOR EACH oFabricante IN aHash[ "devices" ][ nOpcAparelho ][ "brandCodes" ]
            @ oFabricante:__EnumIndex, 30 PROMPT oFabricante[ "brand" ]
         NEXT
         MENU TO nOpcFabricante
         IF LastKey() == K_ESC
            EXIT
         ENDIF
         FOR EACH oCode IN aHash[ "devices" ][ nOpcAparelho ][ "brandCodes" ][ nOpcFabricante][ "codes" ]
            @ oCode:__EnumIndex, 60 SAY oCode
         NEXT
         Inkey(0)
      ENDDO
   ENDDO

   //ShowJson( aHash, "aHash" )
   //Inkey(0)

   RETURN
test.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Converter site/pdf

Mensagem por JoséQuintas »

Putz... o potencial é grande.

Aparece a lista de tipos de aparelho.
Ao escolher o aparelho, aparece a lista de fabricantes para o tipo de aparelho escolhido.
Ao escolher o fabricante, aparece a lista de códigos para o fabricante escolhido, e para o tipo escolhido.
TUDO UMA ÚNICA VARIÁVEL.
Não consigo nem imaginar qual seria o tamanho do fonte, se fosse fazer diferente.

Imaginem isso pra definir uma tela GUI, combos, textbox, listbox, etc.
Uma única variável com tudo.

Achei sensacional
Abre muitas possibilidades.

Nota: e isso tudo foi só pra poder olhar os códigos na hora de programar o meu controle remoto.... kkkk
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Converter site/pdf

Mensagem por JoséQuintas »

Tava com preguiça... fiz em GUI mesmo.

Código: Selecionar todos


#include "inkey.ch"

PROCEDURE Main

   LOCAL cTxt, aHash, oAparelho, oFabricante, oCode
   LOCAL oMenu, oSubMenu1, oSubMenu2, oSubMenu3, nKey := 0

   SetMode(30,100)
   CLS
   cTxt := JasonList() // Memoread( "remote.html" )
   aHash := hb_jsonDecode( cTxt )

   oMenu  := wvgSetAppWindow():MenuBar()
   oSubMenu1 := wvgMenu():New( oMenu, , .T. ):Create()
   FOR EACH oAparelho IN aHash[ "devices" ]
      oSubMenu2 := WvgMenu():new( oSubMenu1, , .T. ):Create()
      FOR EACH oFabricante IN aHash[ "devices" ][ oAparelho:__EnumIndex ][ "brandCodes" ]
         oSubMenu3 := wvgMenu():New( oSubMenu2, , .T. ):Create()
         FOR EACH oCode IN aHash[ "devices" ][ oAparelho:__EnumIndex ][ "brandCodes" ][ oFabricante:__EnumIndex ][ "codes" ]
            oSubMenu3:AddItem( oCode, { || NIL } )
         NEXT
         oSubMenu2:AddItem( oSubMenu3, oFabricante[ "brand" ] )
      NEXT
      oSubMenu1:AddItem( oSubMenu2, oAparelho[ "device" ] )
   NEXT
   oMenu:AddItem( oSubMenu1, "Selecione" )

   DO WHILE nKey != K_ESC
      nKey := Inkey()
   ENDDO
   wvgSetAppWindow():oMenu := NIL
   oMenu:Destroy()

   //ShowJson( aHash, "aHash" )
   //Inkey(0)

   RETURN
teste.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Converter site/pdf

Mensagem por JoséQuintas »

Eliminei a criação do json do fonte, usando resource:

Código: Selecionar todos

STATIC FUNCTION JasonList()

#pragma __binarystreaminclude "resource/remote.json"   | RETURN %s
É com minha função de achoice fiz o resto.

Código: Selecionar todos

#include "inkey.ch"

PROCEDURE pTesRemSony

   LOCAL cTxt, aHash, aList, nOpc
   LOCAL oAparelho, nOpcAparelho
   LOCAL oFabricante, nOpcFabricante
   LOCAL oCode

   cTxt := JasonList() 
   aHash := hb_jsonDecode( cTxt )

   DO WHILE .T.
      Cls()
      aList := {}
      FOR EACH oAparelho IN aHash[ "devices" ]
         AAdd( aList, oAparelho[ "device" ] )
      NEXT
      wAchoiceNoClose( 1, 1, aList,@nOpcAparelho,  "Device" )
      IF Lastkey() == K_ESC
         EXIT
      ENDIF
      DO WHILE .T.
         @ 0, 60 CLEAR TO MaxRow(), MaxCol()
         aList := {}
         FOR EACH oFabricante IN aHash[ "devices" ][ nOpcAparelho ][ "brandCodes" ]
            AAdd( aList, oFabricante[ "brand" ] )
         NEXT
         wAchoiceNoClose( 5, 30, aList, @nOpcFabricante, "brand" )
         IF LastKey() == K_ESC
            EXIT
         ENDIF
         aList := {}
         FOR EACH oCode IN aHash[ "devices" ][ nOpcAparelho ][ "brandCodes" ][ nOpcFabricante][ "codes" ]
            AAdd( aList, oCode )
         NEXT
         wAchoice( 10, 60, aList, @nOpc, "brandcodes" )
         ( nOpc )
         Inkey(0)
         wClose()
      ENDDO
      wClose()
   ENDDO

   RETURN

STATIC FUNCTION JasonList()

#pragma __binarystreaminclude "resource/remote.json"   | RETURN %s
json.png
Conclusão interessante:
Dá pra aproveitar o arquivo json pra economizar fonte PRG, como as IDEs fazem.
Sei não... possibilidades se mutiplicando.... ainda mais podendo salvar no MySQL...

Assim vou começar a gostar de variável hash.....
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Converter site/pdf

Mensagem por JoséQuintas »

Só precisa achar um jeito de reduzir o "linguição".
Agora com título conforme seleção.
Definitivamente, igual array mesmo, só troca número por palavra.
json2.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder