[RESOLVIDO] Problema PDF e HTTPS

Boa tarde,

Estou com uma dificuldade em minha aplicação no momento da exportação para PDF.

Meu servidor trabalha com SSL, onde todas as minhas URL’s são direcionadas para HTTPS.

Estou tentando exportar um relatório para PDF, porém ele gera um PDF vazio.

Executando o comando direto no meu Linux (Ubuntu) o WKHTMLTOPDF retorna a seguinte mensagem:
Error: Failed loading page ********/_lib/tmp/sc_movimentogeral_html_bcb.html

Pelo que entendi, ele não consegue abrir o arquivo HTML

Efetuei um teste executando o mesmo comando, porém localizando o html através do caminho local “/data/www/***”, e o PDF foi gerado corretamente.

Existe alguma restrição no WKHTMLTOPDF para buscar HTML’s com HTTPS?

Não sei mais onde procurar respostas… help-me

Se no log, a url para o arquivo .html está sendo inicada pelo protocolo “https”, o caso é um bug.

Porém, já está sob análise de nossa equipe, e o mais breve possível será disponibilizada a correção.

Também estou com o mesmo problema. Observando o arquivo .log gerado juntamento com o pdf, o caminho é http e nao https. Copiando o link e acrescentando o “s” funciona perfeitamente.

Até hoje com problemas?

A solução temporária, foi passar a aplicação toda para http. Mas ainda espero uma solução, afinal o intuito é usar a hospedagem com certificação (https).

Eu estava com estes problema.
Publicação full 8.1.066 + chmod correto nas pastas do _lib.
Agora funciona normal.

Fiz um teste no meu server com https via celular Android e gerou o PDF normalmente.

quais as permissões que você usou? em quais pastas? toda a pasta _lib?

As permissões podem varia conforme a configuração da hospedagem.
Mas use isto que dará certo: https://suporte.scriptcase.com.br/index.php?/Knowledgebase/Article/View/442/32/consertando-permissoes-do-scriptcase-no-seu-host
Se o teu caso for permissão

Bom dia o tópico é velho mas vou reabrir.
Mudei de servidor para o último Debian -> 9 stretch com scriptcase 9.0.43.
Sem Https gera o pdf, com https não gera.
Já dei permissão 777 no executável do wkhtmltopdf e já baixei uma versão mais atualizada dele.
O erro que acontece é:

/var/www/xxxxxxx/xxxxxxx/_lib/prod/third/wkhtmltopdf/linux-amd64/./wkhtmltopdf-amd64 --page-size Letter --orientation Portrait --header-right “[page]” https://www.xxxxxxxcom.br/_lib/tmp/sc_grid_mariadb_html_4c00g1hapugcbrqotrnam58k46.html /var/www/xxxxxxx/xxxxxxx/xxxxxxx/xxxxxxx/_lib/tmp/sc_pdf_20180327052059_934_grid_mariadb.pdf
Loading pages (1/6)
QSslSocket: cannot resolve CRYPTO_num_locks ] 10%
QSslSocket: cannot resolve CRYPTO_set_id_callback
QSslSocket: cannot resolve CRYPTO_set_locking_callback
QSslSocket: cannot resolve sk_free
QSslSocket: cannot resolve sk_num
QSslSocket: cannot resolve sk_pop_free
QSslSocket: cannot resolve sk_value
QSslSocket: cannot resolve SSL_library_init
QSslSocket: cannot resolve SSL_load_error_strings
QSslSocket: cannot resolve SSLv3_client_method
QSslSocket: cannot resolve SSLv23_client_method
QSslSocket: cannot resolve SSLv3_server_method
QSslSocket: cannot resolve SSLv23_server_method
QSslSocket: cannot resolve X509_STORE_CTX_get_chain
QSslSocket: cannot resolve OPENSSL_add_all_algorithms_noconf
QSslSocket: cannot resolve OPENSSL_add_all_algorithms_conf
QSslSocket: cannot resolve SSLeay
QSslSocket: cannot call unresolved function CRYPTO_num_locks
QSslSocket: cannot call unresolved function CRYPTO_set_id_callback
QSslSocket: cannot call unresolved function CRYPTO_set_locking_callback
QSslSocket: cannot call unresolved function SSL_library_init
QSslSocket: cannot call unresolved function SSLv23_client_method
QSslSocket: cannot call unresolved function sk_num
QSslSocket: cannot call unresolved function SSLv23_client_method
QSslSocket: cannot call unresolved function SSL_library_init
Error: Failed loading page https://www.xxxxxxx.com.br/_lib/tmp/sc_grid_mariadb_html_4c00g1hapugcbrqotrnam58k46.html (sometimes it will work just to ignore this error with --load-error-handling ignore)
Exit with code 1 due to network error: UnknownNetworkError
QSslSocket: cannot call unresolved function CRYPTO_num_locks
QSslSocket: cannot call unresolved function CRYPTO_set_id_callback
QSslSocket: cannot call unresolved function CRYPTO_set_locking_callback

Alguém sabe a solução?

PS: Outras pessoas estão passando por isto: https://github.com/wkhtmltopdf/wkhtmltopdf/issues/3001
Parece que o Debian Stretch teve algumas coisas modificadas.
A solução que funcionou para mim foi instalar a libssl1.0-dev
apt-get install libssl1.0-dev

Problema resolvido.

BUG que vai e volta.

Neymar favor se posicionar.

Foi corrigido há muito tempo. Só ver o changelog:
SCRIPTCASE V9.0.015
11/08/2017 07:00 - Corrigido problema da exportação PDF em ambientes que aceitam apenas o protocolo https.

Desde esta época é utilizada a versão 0.12.4 , a qual até hoje não possui problemas com geração sobre o protocolo https.

Segue exemplo funcional: https://www.scriptcase.myhoost.com/scriptcase9/app/webinar_security/grid_categories_1/

O que houve com o “Alexandre Pereira Bühler” foi a falta da dependência da biblioteca que gera o PDF no SO dele.

Nosso instalador automático já leva todas as dependências, assim como nosso serviço de hospedagem ( vide link acima ).

Ronyan, apesar desse meu post ser de de novembro de 2018 e só estar recebendo uma resposta agora, meu problema persistia até sexta feira.

Alexandre relatou o problema a vocês com grande grau de detalhamento técnico e o vem fazendo a tempos.

Não utilizo vosso instalador automático, acredito que ele atende bem quem utiliza o Scriptcase IDE em modo local, não é meu caso.

Eu não uso a hospedagem de vocês assim como muitos não utilizam.

Eu não tenho competência para para tratar desse assunto mas o Alexandre tem.

Meu problema foi resolvido esse final de semana (pelo Alexandre) onde foi necessário a atualização da distro do linux em meu servidor para tal.

Apesar de eu estar passando por esse problema a inúmeros meses o único retorno que obtive da NM foi para atualizar a versão do SC que já continha a atualização com a correção da wkhtmltopdf (é obvio que eu já tinha atualizado), inclusivo o Sr Rafael retornou email hoje sugerindo a mesma coisa.

Por favor indique na documentação do Scriptcase onde descreve a necessidade de criar as referidas dependências do executável responsável pela exportação PDF em instalações customizadas?

Até onde sei, não há obrigatoriedade de utilizar o instalador da NM e o provedor da NM para perfeito funcionamento do Scriptcase.

Faltou por parte da NM analisar quem fazia a reclamação e dar uma atenção mais específica ao problema.

Mas em fim finalmente a partir de hoje meus clientes podem exporta suas consultas para pdf.

Ronyan aproveitando abri uns tópicos com BUGs aqui, se puder retornar aqui a comunidade fica agradecida.

Haroldo, é como falei: Parece que a Netmake nem se deu ao trabalho de abrir os links que envie nos e-mails em 2018.
Não é agora que será diferente. Continuam usando esta versão 0.12.4 que depende do ssl 1.0
Aqui consta que o bug somente foi arrumado completamente na 0.12.5.
https://github.com/wkhtmltopdf/wkhtmltopdf/issues/3001
E somente depois de atualizar para esta versão ficamos livres da biblioteca defasada libssl1.0-dev.
Eu acho que a netmake não sabe que versão 1.0 do openssl foi afetado por causa do Heartbleed bug.
http://heartbleed.com/
https://en.wikipedia.org/wiki/Heartbleed
“Heartbleed é um bug na biblioteca de software de criptografia open-source OpenSSL, que permite a um atacante ler a memória de um servidor ou de um cliente, permitindo a este recuperar chaves SSL privadas do servidor. [1][2][3] Os logs que foram examinados até agora, levam a crer que alguns hackers podem ter explorado a falha de segurança pelo menos cinco meses antes da falha ser descoberta por equipes de segurança.”
Uma falha de segurança muito grande.
O fix deste bug foi que gerou toda esta situação no wkhtmltopdf.
Esta interação é feita mais uma vez por consideração a você Haroldo.
Comigo não quero mais diálogo com a Netmake. Somente o estritamente necessário.
Como dizem os antigos: “O negócio e ir levando com a barriga.”
Pois para Netmake também parece que somente existe a hospedagem deles e o instalador automático.

PS: php 5.6 sem libssl1.0-dev não vai com wkhtmltopdf 0.12.4.
Eu tenho um monte de usuários Scriptcase no meu servidor que ainda usam o SC8 ou rodam o SC9 no php 5.6.
E a solução ainda é gambiarra do libssl1.0-dev.

Foi como eu disse. Não tenho competência técnica para tal assunto.
Mas o Alexandre tem e foi quem resolveu meu problema.
No mais a NM precisa avaliar melhor a qualificação técnica de quem reporta um problema em vez de dar respostas no suporte ou no bugs padronizadas como se estivessem falando com quem acabou de fazer o seu primeuro cursinho de programação e está ingressando na área agora.
Por isso eu não reporto mais os problemas em bugs@. Se for do interesse da NM resolver os problemas das ferramenta e de bibliotecas de terceiros que leiam minhas publicações aqui no fórum.

Eu só quero ajudar.

Hoje recebi e-mail da netmake falando bobagem.
Parece que ninguém liga de comprometer a segurança do servidor por usar uma libssl defasada para que o wkhtmltopdf funcione.
O desenvolvedores do wkhtmltopdf estão errados, eu estou errado. O Certo é a netmake com o wkhtmltopdf 0.12.4
Segue print do ínicio do link que enviei e parece que ninguém leu:

[b]PS: nota-se -> "#### Fixed in 0.12.5 - Please update to this version.

!! Note that downgrading openssl is not a solution !!"[/b]

Um pedido de desculpas e de reconhecimento por parte da NM seria muito bem vindo.

De qualquer forma vida que se segue, estaremos aqui para elogiar quando valer o elogio e para criticar quando necessário para melhorar a ferramenta e amadurecer e profissionalizar ambos os lados: O Cliente e o Fornecedor.

Boa tarde, Alexandre!

Primeiramente parabéns, pois são muito bons seus posts e pelo sempre vejo (qdo tenho problema com SC, vc sempre tem uma solução e é bem ativo aqui no fórum oficial).

Vi conseguiu resolver o problema da geração dos PDFs e utiliza a instalação manual sobre Linux, que é a mesma que utilizo. E eu estou com este mesmo problema, veja se consegue me ajudar, pois já testei o que li aqui e em outros locais e só consegui fazer gerar o PDF, rodando manualmente o wkhtmltopdf.

Meu ambiente do servidor de produção/publicação:
Ubuntu 21.04
SC 9.6.018
libssl-dev:amd64 - 1.1.1j-1ubuntu3.5 - Secure Sockets Layer toolkit - development files
libssl1.1:amd64 - 1.1.1j-1ubuntu3.5 - Secure Sockets Layer toolkit - shared libraries
wkhtmltopdf - 0.12.6-1 - Command line utilities to convert html to pdf or image using
WebKit

Não consegui localizar como ver a versão do “wkhtmltopdf” interno do SC que fica em “/app/website.com.br/_lib/prod/third/wkhtmltopdf/linux-amd64/wkhtmltopdf-amd64”.

Ao rodar a geração por dentro da aplicação (como se fosse o usuário) ou executando o “wkhtmltopdf-amd64” à partir do diretório “/app/website.com.br/_lib/prod/third/wkhtmltopdf/linux-amd64” é me reportado:

root@web-scriptcase-prod:/app/website.com.br/_lib/prod/third/wkhtmltopdf/linux-amd64# ./wkhtmltopdf-amd64 --page-size A4 --orientation Portrait --header-right “[page]” http://website.com.br/_lib/tmp/sc_cns_n_adesao_html_utqhrjaenotv72sgae3dss5k5d.html /app/website.com.br/_lib/tmp/sc_pdf_9a38e9100c7769d447248877f52d1788_cns_n_adesao.pdf
Loading pages (1/6)
QSslSocket: cannot resolve CRYPTO_num_locks ] 10%
QSslSocket: cannot resolve CRYPTO_set_id_callback
QSslSocket: cannot resolve CRYPTO_set_locking_callback
QSslSocket: cannot resolve sk_free
QSslSocket: cannot resolve sk_num
QSslSocket: cannot resolve sk_pop_free
QSslSocket: cannot resolve sk_value
QSslSocket: cannot resolve SSL_library_init
QSslSocket: cannot resolve SSL_load_error_strings
QSslSocket: cannot resolve SSLv3_client_method
QSslSocket: cannot resolve SSLv23_client_method
QSslSocket: cannot resolve SSLv3_server_method
QSslSocket: cannot resolve SSLv23_server_method
QSslSocket: cannot resolve X509_STORE_CTX_get_chain
QSslSocket: cannot resolve OPENSSL_add_all_algorithms_noconf
QSslSocket: cannot resolve OPENSSL_add_all_algorithms_conf
QSslSocket: cannot resolve SSLeay
QSslSocket: cannot call unresolved function CRYPTO_num_locks
QSslSocket: cannot call unresolved function CRYPTO_set_id_callback
QSslSocket: cannot call unresolved function CRYPTO_set_locking_callback
QSslSocket: cannot call unresolved function SSL_library_init
QSslSocket: cannot call unresolved function SSLv23_client_method
QSslSocket: cannot call unresolved function sk_num
Error: Failed loading page http://website.com.br/_lib/tmp/sc_cns_n_adesao_html_utqhrjaenotv72sgae3dss5k5d.html (sometimes it will work just to ignore this error with --load-error-handling ignore)
Exit with code 1 due to network error: HostNotFoundError
QSslSocket: cannot call unresolved function CRYPTO_num_locks
QSslSocket: cannot call unresolved function CRYPTO_set_id_callback
QSslSocket: cannot call unresolved function CRYPTO_set_locking_callback

E se eu rodar o wkhtmltopdf do sistema operacional à partir de qq diretório, é gerado o pdf normalmente, mesmo apontando para http ou https, ou seja, a nova versão já corrigiu o bug e ele consegue ler o caminho com https.

Então tentei forçar o Scriptcase a ler o wkhtmltopdf do sistema operacional, criando um link simbólico do wkhtmltopdf (que fica em /usr/bin/wkhtmltopdf) e copiando o arquivo “/usr/bin/wkhtmltopdf” para “/app/website.com.br/_lib/prod/third/wkhtmltopdf/linux-amd64/wkhtmltopdf-amd64”, e ao tentar gerar o PDF é me reportado:

The switch --header-right, is not support using unpatched qt, and will be ignored.QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to ‘/tmp/runtime-www-data’
Loading page (1/2)
Error: Failed to load http://website.com.br/_lib/tmp/sc_cns_n_adesao_html_utqhrjaenotv72sgae3dss5k5d.html, with network status code 3 and http status code 0 - Host website.com.br not found
Error: Failed loading page http://website.com.br/_lib/tmp/sc_cns_n_adesao_html_utqhrjaenotv72sgae3dss5k5d.html (sometimes it will work just to ignore this error with --load-error-handling ignore)
Exit with code 1 due to network error: HostNotFoundError

Caso você ou alguém saibam me ajudar, eu ficaria muito agradecido, pois a NM nunca consegue resolver e não se importa em resolver problemas dessa natureza, pois como vocês mesmo disseram, sempre mandam atualizar o SC, depois utilizar a instalação automática ou serviço de host deles, lamentável.

Obrigado e um grande abraço!

Obs: Não utilizei o libssl1.0-dev pois o Ubuntu 21.04 não deixou instalar por ser obsoleto, então foi utilizado o libssl1.1, o que creio que não é o problema. E sim o SC utilizar o wkhtmltopdf interno e não ler o wkhtmltopdf do sistema operacional, que está funcional, pois ao gerar manualmente ele gera com sucesso o PDF.

Creio que o pulo do gato seria alterar a config para o SC ler o wkhtmltopdf do sistema operacional.

Olá.
Sei que isso tudo já está antigo.
Eu tive esse mesmo problema em um servidor novo que estou montando para o desenvolvimento e não lembrava mais o que tinha feito no antigo.
Estou usando o Ubuntu 22.04 LTS e instalei o WKHTMLTOPDF com o apt.
Depois renomeei o wkhtmltopdf-amd64 para um .old e copiei o wkhtmltopdf novo para a pasta do SC e alterei o nome dele para wkhtmltopdf-amd64 .
Funcionou sem problemas…