Phantomjs c # processo waitforexit


Estou tentando pegar instantâneos do meu próprio site usando phantomjs - basicamente, isso é criar uma imagem de visualização do conteúdo enviado pelo usuário. Ive instalado phantomjs no servidor e confirmaram que executá-lo a partir da linha de comando contra as páginas adequadas funciona bem. No entanto, quando tento executá-lo a partir do site, não parece fazer nada. Eu confirmei que o código está sendo chamado, que fantasma está realmente em execução (Ive monitorado os processos, e pode vê-lo aparecer na lista de processo quando eu chamá-lo) - no entanto, nenhuma imagem está sendo gerada. Im não sei onde eu deveria estar olhando para descobrir por que ele não vai criar as imagens - todas as sugestões O bloco de código relevante é abaixo: perguntou 27 de dezembro às 03:07 Quero ser capaz de ler uma captura de tela de um site, e Estou tentando usar phantomjs e ASP. NET. Eu tentei usar page. render que iria salvar a captura de tela para um arquivo. Ele funciona como um aplicativo de console, mas não quando eu chamá-lo de um manipulador asp. net. É provavelmente devido a permissões de arquivo, uma vez que aplicativos simples (como hello. js) funcionam bem. Isso é certo, minha preferência seria não escrever em um arquivo, mas lidar com os bytes e retornar uma imagem diretamente do manipulador. Estou um pouco perdido em 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 caiu phantomjs. Eu gosto da aparência dele e quero continuar usando-o se possível. Executando Phantomjs usando C para pegar instantâneo de webpageEu tenho um pequeno projeto divertido acontecendo agora que envolve tomar uma parte de uma página da web, carregá-lo em 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 um bagilhão maneiras diferentes de realizar isso, então o abaixo é uma prova de conceito de hackers. Primeiro, vamos precisar de 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 do aplicativo principal para a página de stub. Mais duas entradas de altura e largura, que são usadas simplesmente para mostrar argumento de linha de comando passando para Phantom. Um botão que pode ser usado para acionar uma função JavaScript que, por sua vez, desenhará a página. Esperemos que seja óbvio que o nosso método Javascript init () no my. js, simplesmente plunk tudo no container div para exibição. O próximo elemento que precisamos, movendo-se para cima da pilha, é o nosso corredor JavaScript que vamos passar para Phantom, chutando todo este processo fora. Tome nota da chamada do sistema de arquivos para stumpage. html isso poderia ser passado, mas, eu achei que mostrando uma chamada de sistema de arquivos pode ser útil para alguém. Começamos o nosso método C configurando o caminho para o Phantom (nota: você poderia adicionar Phantom ao seu caminho, passá-lo para que não haja mágica consts, etc.). Em seguida, precisamos configurar os argumentos da linha de comando para o Phantom: O caminho relativo para nosso arquivo runner do JavaScript de cima. A altura da página. A largura da página. Continue configurando um ambiente de processo para o Phantom, redirecionando o padrão de entrada, saída de erro de amplificador, que possibilitará a interação com o Phantom. As duas configurações finais do processo são para evitar uma janela no processo de lançamento e desabilitar a Execução do Shell (veja Documentos MSDN para obter detalhes sobre a Execução do Shell). Com o Phantom instalado e funcionando, podemos fazer referência ao fluxo de entrada padrão redirecionado, serializar nossos dados Para o nosso processo Phantom. O fechamento do fluxo de entrada desencadeará a avaliação da página no Phantom. AVISO deve notar-se que uma leitura de stdin a partir de Phantom 1.9.7 é uma chamada de bloqueio. No entanto, existe um pedido de funcionalidade para 2.0 que fará este assíncrono por predefinição. Se você está utilizando esta técnica você vai querer bloquear defensivamente no stdin ler no caso de que as coisas mudam no futuro. A etapa final é snag os bytes de stdout certificando-se de chamar para WaitForExit método do processo acontece depois de ter uma referência para o stdout. A ordenação irá garantir que você leia todo o conteúdo do stdout. Por fim, converta a seqüência de caracteres para uma matriz de bytes e retornar. Como eu observei na introdução, você poderia adicionar sua matriz de bytes a um conjunto de dados e, em seguida, mapear um elemento de imagem de um RDLC para o conjunto de dados, dando-lhe conteúdo de imagem dinâmica para relatórios. Você pode potencialmente usar essa técnica em testes de integração para garantir que as posições dos elementos na página não tenham se movido. Ou mesmo como uma técnica de arquivamento simples para raspar e salvar o estado de um site.

Comments

Popular Posts