Monday 17 July 2017

Phantomjs C # Process Waitforexit


Quero poder ler uma captura de tela de um site e estou tentando usar phantomjs e ASP. Tentei usar page. render que salvaria a captura de tela em um arquivo. Ele funciona como um aplicativo de console, mas não quando eu chamo isso de um manipulador de asp. É provavelmente devido a permissões de arquivo, uma vez que aplicações simples (como hello. js) funcionam bem. Isso está certo, minha preferência não seria escrever em um arquivo, mas lidar com os bytes e retornar uma imagem diretamente do manipulador. Estou um pouco perdido quanto a como fazer isso. Eu notei um método chamado page. renderBase64, mas não sei como usá-lo. Atualmente, estou usando um IHttpHandler. Há uma pergunta semelhante aqui, mas essa pessoa eventualmente deixou cair phantomjs. Eu gosto da aparência e quero continuar a usá-lo, se possível. Executando o Phantomjs usando o C para pegar instantâneo da página web. Tenho um pequeno e divertido projeto que está acontecendo agora que envolve a tomada de uma porção de uma página da Web, carregando no PhantomJS, passando um pedaço de dados para ele, tirando uma foto da página e exibindo Essa imagem em um relatório RDLC. Há como uma bagagem de maneiras diferentes de conseguir isso, então o abaixo é uma prova de conceito de hackers. Primeiro, vamos precisar é uma página da web muito simples com os seguintes elementos: Um elemento de formulário com dados de entrada ocultos que serão usados ​​para mover dados da aplicação principal para a página do stub. Mais duas entradas de altura e largura, que são usadas simplesmente para mostrar o argumento da linha de comando passando para o Phantom. Um botão que pode ser usado para desencadear uma função JavaScript que, por sua vez, irá desenhar a página. Esperemos que seja óbvio que o nosso método JavaScript init () em my. js, simplesmente irá mergulhar tudo no container div para exibição. O próximo elemento que precisamos, subindo a pilha, é o nosso corredor de Javascript que passaremos para o Phantom, chutando todo esse processo. Tire nota da chamada do sistema de arquivos para stumpage. html, isso pode ser passado, mas, imaginei que mostrar uma chamada do sistema de arquivos pode ser útil para alguém. Começamos o nosso método C, configurando o caminho para Phantom (nota: você pode adicionar Phantom ao seu caminho, passá-lo para que não haja consts mágicos, etc.). Em seguida, precisamos configurar os argumentos da linha de comando para o Phantom: o caminho relativo ao nosso arquivo de corredor de JavaScript de cima. A altura da página. A largura da página. Continue configurando um ambiente de processo para o Phantom redirecionando Standard In, Out amp Error que habilitará a interação com o Phantom. As duas configurações finais do processo são para impedir que uma janela no processo seja iniciada e a desativação da Execução do Shell (veja documentos do MSDN para obter detalhes sobre a Execução da Shell). Com o Phantom em funcionamento, podemos fazer uma referência ao fluxo de entrada padrão redirecionado, serializar nossos dados Para o nosso processo Phantom. O fechamento do fluxo de entrada irá ativar a avaliação da página em Phantom. AVISO: deve-se notar que uma leitura de stdin a partir do Phantom 1.9.7 é uma chamada de bloqueio. No entanto, há uma solicitação de recurso para 2.0 que tornará este assíncrono por padrão. Se você estiver usando essa técnica, você quer bloquear defensivamente no stdin lido no caso de as coisas mudarem no futuro. O último passo é anular os bytes do stdout, certificando-se de chamar o método WaitForExit do processo, depois de ter feito uma referência ao stdout. O pedido garante que você leia todos os conteúdos do stdout. Por último, converta a string em uma matriz de bytes e retorna. Como observei na introdução, você poderia adicionar sua matriz de bytes a um conjunto de dados, depois mapear um elemento de imagem de um RDLC para o conjunto de dados, dando-lhe conteúdo de imagem dinâmico para relatórios. Você poderia potencialmente usar essa técnica em testes de integração para garantir que as posições de elementos na página não se movessem. Ou mesmo como uma simples técnica de arquivamento para raspar e salvar o estado de um site.

No comments:

Post a Comment