Tuesday 14 November 2017

Gem Wkhtmltopdf Binary Options


Eu tenho um Ruby on Rails 3.2 aplicativo usando o wickedpdf gem e wkhtmltopdf 0.9.9 biblioteca para produzir PDFs na minha máquina local, que é um MAC OSX 10.7.5 Lion. O aplicativo processa com êxito as páginas HTML (que incluem imagens SVG) como arquivos PDF, que é o comportamento exato que estava visando o aplicativo para realizar. No local, tivemos que usar wkhtmltopdf 0.9.9 devido a um bug na versão 11.0.0 para OSX. O problema é que quando o aplicativo é empurrado para a produção no Heroku, ele tem que usar um binário diferente: wkhtmltopdf-0.9.9 Binário estático do Linux (amd64) ea renderização SVG parece desmoronar. Um PDF é produzido, mas as imagens SVG não são processadas corretamente. Eles são simplesmente cascas em branco ou quadrado onde as imagens devem ser. Tentamos usar a gem wkhtmltopdf-heroku, mas continuamos recebendo um erro Broken Pipe. Não há nenhuma mensagem de erro relacionada a este problema e não sabemos onde o problema está com as versões do Linux. Todas as idéias lá fora Este é o nosso código no arquivo config / initializers / wickedpdf. rb: wkhtmltoimage 0.10.0 rc2 Manual Este arquivo documenta wkhtmltoimage, um programa capaz de converter documentos HTML em imagens. Contato Se você experimentar bugs ou quiser solicitar novos recursos, visite code. google/p/wkhtmltopdf/issues/list. Se você tiver quaisquer problemas ou comentários, não hesite em contactar-me: uuf6429gmail Licença Copyright (C) 2010 wkhtmltopdf / wkhtmltoimage Autores. Licença GPLv3: GNU GPL versão 3 ou posterior gnu. org/licenses/gpl. Este é um software livre: você é livre para mudar e redistribuí-lo. Não existe GARANTIA, na medida permitida por lei. Autores Escrita por Jan Habermann, Christian Sciberras e Jakob Truelsen. Patches de Mehdi Abbad, Lyes Amazouz, Pascal Bach, Emmanuel Bouthenot, Benoit Garret e Mrio Silva. Sinopse Opções gerais Os itens marcados só estão disponíveis usando o QT remendado. Especificando um Proxy Por padrão, as informações de proxy serão lidas a partir das variáveis ​​de ambiente: proxy, allproxy e httpproxy, as opções de proxy também podem ser especificadas com a opção - p Aqui estão alguns exemplos (Caso você não esteja familiarizado com o BNF): O site wkhtmltopdf você pode baixar uma versão estática de wkhtmltopdf code. google/p/wkhtmltopdf/downloads/list. Este binário estático funcionará na maioria dos sistemas e vem com uma compilação no QT remendado. Infelizmente, o binário estático não é particularmente estático, no Linux depende tanto do glibc como do openssl, além disso você precisará ter um servidor xserver instalado, mas não necessário. Você precisará ter fontes diferentes instaladas, incluindo xfonts-scalable (Type1) e msttcorefonts. Consulte code. google/p/wkhtmltopdf/wiki/static para obter informações sobre problemas. Compilação Pode acontecer que o binário estático não funcione para o seu sistema por uma razão ou outra, nesse caso, você pode precisar compilar wkhtmlimagem. Instalação Existem várias maneiras de instalar wkhtmltoimage. Você pode baixar um binário já compilado, ou você pode compilar wkhtmlimagem você mesmo. Exemplos Esta seção apresenta uma série de exemplos de como invocar wkhtmltoimage. Para converter um arquivo HTML remoto para PNG: Para converter um arquivo HTML local para PNG: Salvar o. pdf gerado em disco Configurando o PDFKit-save-pdf cabeçalho fará com que o PDFKit escreva o. pdf gerado para o arquivo indicado pelo valor de O cabeçalho. Fará com que o arquivo. pdf seja salvo em path / to / saved. pdf além de ser enviado de volta para o cliente. Se o caminho não for gravável / inexistente, a escrita falhará silenciosamente. O cabeçalho PDFKit-save-pdf nunca é enviado de volta para o cliente. Problema de thread único: em ambientes de desenvolvimento, é comum executar um único processo de servidor. Isso pode causar problemas ao renderizar seu pdf requer wkhtmltopdf para bater seu servidor novamente (para imagens, js, css). Isso ocorre porque as solicitações de recursos serão bloqueadas pela solicitação inicial ea solicitação inicial estará aguardando as solicitações de recursos causando um bloqueio. Isso geralmente não é um problema em um ambiente de produção. Para contornar esse problema, você pode querer executar um servidor com vários funcionários como o Passenger ou tentar incorporar seus recursos dentro de seu HTML para evitar solicitações HTTP extras. Exemplo de solução (rails / bundler), adicione unicórnio ao grupo de desenvolvimento em seu unicórnio gem Gemfile, em seguida, executar bundle. Em seguida, adicione um arquivo config / unicorn. conf com Then para executar o aplicativo unicornrails - c config / unicorn. conf (from railsroot) Os recursos não estão incluídos no PDF: Imagens, CSS ou JavaScript não parecem estar baixando corretamente no PDF. Isto é devido ao fato de que wkhtmltopdf não sabe onde encontrar esses arquivos. Certifique-se de que está a utilizar caminhos absolutos (iniciar com a barra invertida) para os seus recursos. Se você estiver usando o PDFKit para gerar PDFs a partir de uma fonte HTML bruta, certifique-se de usar caminhos completos (arquivos ou URLs incluindo o domínio). Em ambientes de servidor restritivos a configuração rooturl pode ser o que você está procurando para alterar seu host de ativos. Mangled no navegador: Certifique-se de que seus cabeçalhos de resposta HTTP especificam Content-Type: application / pdf Nota sobre Patches / Pull Requests Fork o projeto. Configure seu ambiente de desenvolvimento com: gem install bundler bundle install Faça sua adição de recursos ou correção de bugs. Adicione testes para ele. Isso é importante para que eu não quebrá-lo em uma versão futura, sem intenção. Confie, não mexa com rakefile, versão ou histórico. (Se você quiser ter sua própria versão, isso é bom, mas a versão bump em um commit por si mesmo, eu posso ignorar quando eu puxar) Envie-me um pedido pull. Pontos de bônus para ramos tópicos. Copyright (c) 2010 Jared Pace. Consulte a LICENÇA para obter detalhes. Atualização de Panopto exigida Em 29 de julho, a Panopto exigirá que todos os gravadores sejam atualizados para a versão 5.1 ou 5.2. Você será solicitado a atualizar seu gravador nessa data e não poderá usar o Panopto até que sua versão seja atualizada para 5.1 ou 5.2. Se você estiver usando um computador emitido por Maryville, entre em contato com o Help Desk para concluir a atualização. Mesmo que a Panopto ainda esteja disponível, recomendamos o uso da nossa nova plataforma de vídeo, Kaltura. Para futuras necessidades de gravação de vídeo. Referências Entre em contato com LDT com perguntas. Um plugin de geração de PDF para Ruby on Rails Wicked PDF usa o utilitário shell wkhtmltopdf para servir um arquivo PDF para um usuário de HTML. Em outras palavras, ao invés de lidar com um DSL de geração de PDF de algum tipo, você simplesmente escrever uma visualização HTML como faria normalmente, então deixe Wicked PDF cuidar do material difícil. Wicked PDF foi verificado para trabalhar em Ruby versões 1.8.7 a 2.3 Rails 2 a 5.0 Adicione isso ao seu Gemfile e execute o pacote de instalação: Em seguida, crie o inicializador com Você também pode precisar adicionar a config / initializers / mimetypes. rb em versões mais antigas Versões do Rails. Porque wickedpdf é um wrapper para wkhtmltopdf. Você precisará instalar isso, também. A maneira mais simples de instalar todos os binários (Linux, OSX, Windows) é através da gem wkhtmltopdf-binário. Para instalar isso, adicione uma segunda gem para o seu Gemfile e execute a instalação do pacote. Este wrapper pode rastrear em versões, no momento em que envolve a versão 0.9 do wkhtmltopdf enquanto houver versão 0.12 disponível. Algumas das opções avançadas listadas abaixo não estão disponíveis com 0,9. Se o seu executável wkhtmltopdf não estiver no seu caminho de webservers, você pode configurá-lo em um inicializador: Para obter mais informações sobre wkhtmltopdf. Consulte a homepage dos projetos. Condições de uso - Importante O binário wkhtmltopdf é executado fora de seu aplicativo Rails, portanto, seus layouts normais não funcionarão. Se você planeja usar qualquer CSS, JavaScript ou arquivos de imagem, você deve modificar seu layout para que você forneça uma referência absoluta a esses arquivos. A melhor opção para Rails sem o pipeline de ativos é usar o wickedpdfstylesheetlink. Wickedpdfimagetag. E wickedpdfjavascriptincludetag ajudantes ou para ir direto para um CDN (Content Delivery Network) para bibliotecas populares como jQuery. Usando wickedpdfhelpers com o pipeline de ativos aumenta Nomes de recursos passados ​​para ajudantes não devem incluir o prefixo / assets. erro. Para contornar isso, você pode usar wickedpdfassetbase64 com os auxiliares Rails normais, mas esteja ciente de que isso base64 codificar seu conteúdo e inline-lo na página. Isso é muito rápido para pequenos ativos, mas os grandes podem levar muito tempo. Neste caso, você pode usar os assistentes padrão do Rails e apontar para o CDN atual para qualquer estrutura que você está usando. Para jQuery, seria algo como este, dadas as versões atuais no momento desta redação. Uso do pipeline de ativos A maneira de lidar com isso para o pipeline de ativos no Heroku é incluir esses arquivos na sua lista de pré-compilação de ativos, conforme a seguir: Uso avançado com todas as opções disponíveis Por padrão, ele será processado sem um layout (layout: false) Para o atual controlador e ação. Wkhtmltopdf Opções binárias Algumas das opções acima estão sendo passadas para o binário wkhtmltopdf. Eles podem ser usados ​​para controlar as opções usadas na renderização do Webkit antes de gerar o PDF. Exemplos dessas opções são: Você pode ver a lista completa de opções em Opções Globais nos documentos de uso do wkhtmltopdf. Se você precisa apenas criar um pdf e não exibi-lo: Se você precisar exibir utf caracteres codificados, adicione isso para suas visualizações em pdf ou layouts: Agora você pode usar um parâmetro de depuração no URL que mostra o conteúdo de O pdf no html liso para projetá-lo mais rapidamente. Em primeiro lugar você deve configurar o parâmetro de renderização showashtml: params. key (debug) e, em seguida, apenas usá-lo como você normalmente, mas adicionar depuração como um parâmetro GET na URL: No entanto, os helpers wickedpdf usará file: /// caminhos Para recursos ao usar: showashtml, e seu recurso de segurança de domínio cruzado de navegadores irá chutar, e não processá-los. Para contornar isso, você pode carregar seus recursos assim em seus modelos: Se uma imagem de seu HTML não puder ser encontrada (caminho relativo ou errado para ie), outras imagens com caminhos direitos também não podem ser exibidas no PDF de saída Parece ser um problema com wkhtmltopdf). Você pode ter notado: este plugin é fortemente inspirado pelo PrinceXML plugin princely. PrinceXMLs custo foi proibitivo para mim. Então, com uma pequena ajuda de alguns amigos (graças jqr), eu rastreado wkhtmltopdf, e aqui estamos nós. Fork it Criar sua filial de recursos (git checkout - b my-new-feature) Execute o conjunto de testes e verifique a saída (rake) Adicionar testes para o recurso ou corrigir (por favor) Confirmar suas alterações (git commit - am Adicionar algum recurso) Empurrar para o ramo (git push origem my-new-feature) Criar novo Pull Request Também, graças ao unixmonkey. Galdomédia. Jcrisp. Lleirborras. Tiennou. E todos os outros para todo o seu trabalho duro e paciência com os meus atrasos na fusão em suas melhorias.

No comments:

Post a Comment