Como converter html em pdf

瀏覽次數:115 次
跳到第一則未讀訊息

Leandro Paz

未讀,
2017年9月19日 下午1:22:342017/9/19
收件者:web2py-users-brazil
Boa tarde pessoal, estou precisando gerar certificados (de eventos) em pdf, pensei em cria-los em html e pesquisar algum método de converte-los para pdf. 


Testei alguns mas não consegui utiliza-los.

O que você estão usando para gerar pdf?


Milton A

未讀,
2017年9月19日 下午1:53:222017/9/19
收件者:web2py-us...@googlegroups.com

--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsub...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsub...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Leandro Paz

未讀,
2017年9月19日 下午2:31:152017/9/19
收件者:web2py-users-brazil
Tentei mas sem resultado.
Instalei usando: pip install wkhtmltopdf
 
E em uma view inseri:
----------------------
{{import os
teste = "wkhtmltopdf https://www.drall.com.br/pt/ teste.pdf"
os.system(teste)}}
 ---------------------

No servidor apareceu:
'wkhtmltopdf' não é reconhecido como um comando interno
ou externo, um programa operável ou um arquivo em lotes.


Junior Phanter

未讀,
2017年9月19日 下午2:44:432017/9/19
收件者:web2py-us...@googlegroups.com
vc tem que fazer o import do wkhtmltopdf

Junior Phanter

未讀,
2017年9月19日 下午2:54:162017/9/19
收件者:web2py-us...@googlegroups.com
Eu cheguei a usar ele.. o meu problema foi o seguinte, no CSS vc tem que colocar o prefixo webkit, aconselho desenhar o html evitando elementos novos, tive problemas com o uso do <strong></strong>. Só que eu não me aprofundei no uso dele, mas eu achei muito legal, pois ele trabalha exatamente como um navegador web. Eu pretendo futuramente procurar um navegador que tenha a mesma engine e as mesmas limitações dele para poder fazer meus pdfs, pois o código html construído já serve para impressão direta, então o cliente pode optar pela versão em PDF se quiser...

Em 19 de setembro de 2017 15:44, Junior Phanter <junior...@gmail.com> escreveu:
vc tem que fazer o import do wkhtmltopdf
Em 19 de setembro de 2017 15:31, Leandro Paz <leandro....@gmail.com> escreveu:
Tentei mas sem resultado.
Instalei usando: pip install wkhtmltopdf
 
E em uma view inseri:
----------------------
{{import os
teste = "wkhtmltopdf https://www.drall.com.br/pt/ teste.pdf"
os.system(teste)}}
 ---------------------

No servidor apareceu:
'wkhtmltopdf' não é reconhecido como um comando interno
ou externo, um programa operável ou um arquivo em lotes.


--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsubscribe...@googlegroups.com

Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsubscribe...@googlegroups.com.

Milton A

未讀,
2017年9月19日 下午2:57:372017/9/19
收件者:web2py-us...@googlegroups.com
Qual sistema operacional está utilizando? Se for algum sistema linux, utilize o sistema de pacote para instalação do wkhtmltopdf.

Em sistemas Debian-like, precisa apenas
apt-get install wkhtmltopdf

E dai seu programa irá funcionar.

E teste com páginas estáticas, visto que páginas com renderização por JS precisarão de outros parâmetros, como "--javascript-delay", também explicado no link.

wkhtmltopdf http://www.google.com google.pdf

Se tem pacote para o Python e está utilizando, terá que fazer o import como já indicado.

Se vai usar o os.system, tem que instalar no sistema operacional o wkhtmltopdf.

2017-09-19 15:44 GMT-03:00 Junior Phanter <junior...@gmail.com>:
vc tem que fazer o import do wkhtmltopdf
Em 19 de setembro de 2017 15:31, Leandro Paz <leandro....@gmail.com> escreveu:
Tentei mas sem resultado.
Instalei usando: pip install wkhtmltopdf
 
E em uma view inseri:
----------------------
{{import os
teste = "wkhtmltopdf https://www.drall.com.br/pt/ teste.pdf"
os.system(teste)}}
 ---------------------

No servidor apareceu:
'wkhtmltopdf' não é reconhecido como um comando interno
ou externo, um programa operável ou um arquivo em lotes.


--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsubscribe...@googlegroups.com

Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsubscribe...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.

Junior Phanter

未讀,
2017年9月19日 下午2:59:532017/9/19
收件者:web2py-us...@googlegroups.com
realmente, ao fazer: pip install wkhtmltopdf foi instalado o módulo python e não do sistema... Bem observado Milton A

Leandro Paz

未讀,
2017年9月19日 下午3:12:212017/9/19
收件者:web2py-users-brazil
No momento estou usando no windows testando em local host

Milton A

未讀,
2017年9月19日 下午3:25:422017/9/19
收件者:web2py-us...@googlegroups.com
Se está em windows, creio que tenha como instalar o software indicado para poder usá-lo via os.system.

Infelizmente não sei como fazer para ajudar.


Para o amigo Junior Phanter

"Eu cheguei a usar ele.. o meu problema foi o seguinte, no CSS vc tem que colocar o prefixo webkit, aconselho desenhar o html evitando elementos novos, tive problemas com o uso do <strong></strong>. Só que eu não me aprofundei no uso dele, mas eu achei muito legal, pois ele trabalha exatamente como um navegador web. Eu pretendo futuramente procurar um navegador que tenha a mesma engine e as mesmas limitações dele para poder fazer meus pdfs, pois o código html construído já serve para impressão direta, então o cliente pode optar pela versão em PDF se quiser..."

Creio que esta dica seja mais o que precisa, pelo que descreveu:

Aqui usa o Google Chrome. Não é um sistema especializado de conversão HTML em PDF, porque tem menos parametros e configuração disponíveis que o primeiro que sugeri, no entanto, este daqui aceita 'programação', caso queira se aprofundar. Dai, com o poder de programar, creio que precisa do Node.js, dai ele pode fazer o inimaginável.

Pode ser interligado ao Selenium também, ou seja, usando 'programação' vc pode comandar o browser totalmente, saindo um pouco do escopo de um mero sistema especializado em converter HTML em PDF que sugeri, para uma solução bem mais elaborada.




2017-09-19 15:59 GMT-03:00 Junior Phanter <junior...@gmail.com>:
realmente, ao fazer: pip install wkhtmltopdf foi instalado o módulo python e não do sistema... Bem observado Milton A
Em 19 de setembro de 2017 15:56, Milton A <maaj...@gmail.com> escreveu:
Para se desinscrever, envie email a: web2py-users-brazil+unsubscribe...@googlegroups.com

Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
--- 
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsubscribe...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

-- 
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsubscribe...@googlegroups.com

Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
--- 
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsubscribe...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

-- 
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsub...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
--- 
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsub...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.
2017-09-19 16:12 GMT-03:00 Leandro Paz <leandro....@gmail.com>:
No momento estou usando no windows testando em local host

Milton A

未讀,
2017年9月19日 下午3:29:132017/9/19
收件者:web2py-us...@googlegroups.com
Parece que para windows, o caminho é por aqui:

2017-09-19 16:17 GMT-03:00 Milton A <maaj...@gmail.com>:
Se está em windows, creio que tenha como instalar o software indicado para poder usá-lo via os.system.

Infelizmente não sei como fazer para ajudar.


Para o amigo Junior Phanter

"Eu cheguei a usar ele.. o meu problema foi o seguinte, no CSS vc tem que colocar o prefixo webkit, aconselho desenhar o html evitando elementos novos, tive problemas com o uso do <strong></strong>. Só que eu não me aprofundei no uso dele, mas eu achei muito legal, pois ele trabalha exatamente como um navegador web. Eu pretendo futuramente procurar um navegador que tenha a mesma engine e as mesmas limitações dele para poder fazer meus pdfs, pois o código html construído já serve para impressão direta, então o cliente pode optar pela versão em PDF se quiser..."

Creio que esta dica seja mais o que precisa, pelo que descreveu:

Aqui usa o Google Chrome. Não é um sistema especializado de conversão HTML em PDF, porque tem menos parametros e configuração disponíveis que o primeiro que sugeri, no entanto, este daqui aceita 'programação', caso queira se aprofundar. Dai, com o poder de programar, creio que precisa do Node.js, dai ele pode fazer o inimaginável.

Pode ser interligado ao Selenium também, ou seja, usando 'programação' vc pode comandar o browser totalmente, saindo um pouco do escopo de um mero sistema especializado em converter HTML em PDF que sugeri, para uma solução bem mais elaborada.



2017-09-19 15:59 GMT-03:00 Junior Phanter <junior.conex@gmail.com>:
realmente, ao fazer: pip install wkhtmltopdf foi instalado o módulo python e não do sistema... Bem observado Milton A
Em 19 de setembro de 2017 15:56, Milton A <maaj...@gmail.com> escreveu:
Qual sistema operacional está utilizando? Se for algum sistema linux, utilize o sistema de pacote para instalação do wkhtmltopdf.

Em sistemas Debian-like, precisa apenas
apt-get install wkhtmltopdf

E dai seu programa irá funcionar.

E teste com páginas estáticas, visto que páginas com renderização por JS precisarão de outros parâmetros, como "--javascript-delay", também explicado no link.

wkhtmltopdf http://www.google.com google.pdf

Se tem pacote para o Python e está utilizando, terá que fazer o import como já indicado.

Se vai usar o os.system, tem que instalar no sistema operacional o wkhtmltopdf.
2017-09-19 15:44 GMT-03:00 Junior Phanter <junior.conex@gmail.com>:
vc tem que fazer o import do wkhtmltopdf
Em 19 de setembro de 2017 15:31, Leandro Paz <leandro.juazeiro@gmail.com> escreveu:
Tentei mas sem resultado.
Instalei usando: pip install wkhtmltopdf
 
E em uma view inseri:
----------------------
{{import os
teste = "wkhtmltopdf https://www.drall.com.br/pt/ teste.pdf"
os.system(teste)}}
 ---------------------

No servidor apareceu:
'wkhtmltopdf' não é reconhecido como um comando interno
ou externo, um programa operável ou um arquivo em lotes.


-- 
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsub...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
--- 
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsub...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

-- 
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsub...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
--- 
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsub...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

-- 
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsub...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
--- 
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsub...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

-- 
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsubscri...@googlegroups.com

Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
--- 
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsubscr...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.
2017-09-19 16:12 GMT-03:00 Leandro Paz <leandro....@gmail.com>:
No momento estou usando no windows testando em local host

--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsubscribe...@googlegroups.com

Junior Phanter

未讀,
2017年9月20日 凌晨1:57:522017/9/20
收件者:web2py-us...@googlegroups.com
Vou dar uma olhada... isto é muito bom... eu não sabia dessa funcionalidade do chrome, já havia ouvido falar de algo parecido no Firefox, mas eu procurei e não achei... vlw aí pela dica...

Em 19 de setembro de 2017 16:17, Milton A <maaj...@gmail.com> escreveu:
Se está em windows, creio que tenha como instalar o software indicado para poder usá-lo via os.system.

Infelizmente não sei como fazer para ajudar.


Para o amigo Junior Phanter

"Eu cheguei a usar ele.. o meu problema foi o seguinte, no CSS vc tem que colocar o prefixo webkit, aconselho desenhar o html evitando elementos novos, tive problemas com o uso do <strong></strong>. Só que eu não me aprofundei no uso dele, mas eu achei muito legal, pois ele trabalha exatamente como um navegador web. Eu pretendo futuramente procurar um navegador que tenha a mesma engine e as mesmas limitações dele para poder fazer meus pdfs, pois o código html construído já serve para impressão direta, então o cliente pode optar pela versão em PDF se quiser..."

Creio que esta dica seja mais o que precisa, pelo que descreveu:

Aqui usa o Google Chrome. Não é um sistema especializado de conversão HTML em PDF, porque tem menos parametros e configuração disponíveis que o primeiro que sugeri, no entanto, este daqui aceita 'programação', caso queira se aprofundar. Dai, com o poder de programar, creio que precisa do Node.js, dai ele pode fazer o inimaginável.

Pode ser interligado ao Selenium também, ou seja, usando 'programação' vc pode comandar o browser totalmente, saindo um pouco do escopo de um mero sistema especializado em converter HTML em PDF que sugeri, para uma solução bem mais elaborada.



2017-09-19 15:59 GMT-03:00 Junior Phanter <junior.conex@gmail.com>:
realmente, ao fazer: pip install wkhtmltopdf foi instalado o módulo python e não do sistema... Bem observado Milton A
Em 19 de setembro de 2017 15:56, Milton A <maaj...@gmail.com> escreveu:
Qual sistema operacional está utilizando? Se for algum sistema linux, utilize o sistema de pacote para instalação do wkhtmltopdf.

Em sistemas Debian-like, precisa apenas
apt-get install wkhtmltopdf

E dai seu programa irá funcionar.

E teste com páginas estáticas, visto que páginas com renderização por JS precisarão de outros parâmetros, como "--javascript-delay", também explicado no link.

wkhtmltopdf http://www.google.com google.pdf

Se tem pacote para o Python e está utilizando, terá que fazer o import como já indicado.

Se vai usar o os.system, tem que instalar no sistema operacional o wkhtmltopdf.
2017-09-19 15:44 GMT-03:00 Junior Phanter <junior.conex@gmail.com>:
vc tem que fazer o import do wkhtmltopdf
Em 19 de setembro de 2017 15:31, Leandro Paz <leandro.juazeiro@gmail.com> escreveu:
Tentei mas sem resultado.
Instalei usando: pip install wkhtmltopdf
 
E em uma view inseri:
----------------------
{{import os
teste = "wkhtmltopdf https://www.drall.com.br/pt/ teste.pdf"
os.system(teste)}}
 ---------------------

No servidor apareceu:
'wkhtmltopdf' não é reconhecido como um comando interno
ou externo, um programa operável ou um arquivo em lotes.


-- 
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsub...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
--- 
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsub...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

-- 
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsub...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
--- 
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsub...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

-- 
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsub...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
--- 
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsub...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

-- 
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsubscri...@googlegroups.com

Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
--- 
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsubscr...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.
2017-09-19 16:12 GMT-03:00 Leandro Paz <leandro....@gmail.com>:
No momento estou usando no windows testando em local host

--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsubscribe...@googlegroups.com

Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsubscribe...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Milton A

未讀,
2017年9月20日 上午8:08:462017/9/20
收件者:web2py-us...@googlegroups.com
Eu agradeço também, pq nunca tinha ouvido falar era do Firefox e vou procurar saber mais. Será muito útil. Obrigado.

訊息已遭刪除

Leandro Paz

未讀,
2017年9月20日 下午2:45:152017/9/20
收件者:web2py-users-brazil
Pessoal obrigado pela ajuda.

Para o que estou precisando consegui fazer com o pyfpdf.

Segue código caso seja dúvida de mais alguém. Ainda integrar com banco de dados mas o problema do pdf está resolvido.

No models
==================
from gluon.contrib.fpdf import FPDF, HTMLMixin
class MyFPDF(FPDF, HTMLMixin):

    pass


def text(atext):
    # deu erro em texto longos dentro de html
    #return atext.decode("utf-8").encode("latin-1")
    return atext.decode("utf-8").encode("cp1252")
==================


No controller
==================
def modelo2():

htmlsimples= """
<H1 align="center">CERTIFICADO</H1>
<h2> teste </h2>
<p>  Certificamos que {NOME} participou como aluno da OFICINA “O ENSINO DE MATEMÁTICA COM FOCO NA INTERDISCIPLINARIDADE” realizada durante o VIII Colóquio de Matemática do Instituto Federal de Educação, Ciência e Tecnologia do Ceará (IFCE) - campus Juazeiro do Norte, nas manhãs dos dias 13 e 14 de agosto de 2015, com carga horária de 4 horas. 
</p>

<p>
Juazeiro do Norte - Ceará, 14 de agosto de 2015. 
</p>
"""





#from gluon.contrib.fpdf import FPDF, HTMLMixin

inicio_texto_y=75
margem_geral=10
margem_texto=20
margem_paginacao=0#3
                    
pdf = MyFPDF('L', 'mm', 'A4')
#pdf.set_margins(left: float, top: float, right: float = -1)

pdf.set_margins(margem_texto, margem_geral, margem_geral)
pdf.set_right_margin(margem_texto)

#First page
pdf.add_page()

import os
background = os.path.join(request.env.web2py_path, "applications", "Eventos", "cert_todo.jpg")

#pdf.image(name, x = None, y = None, w = 0, h = 0, type = '', link = '')
# se colocar zero fica automático
pdf.image(background, 
margem_geral, 
margem_geral+margem_paginacao,  
297-(2*margem_geral) , # largura
210-(margem_geral+margem_paginacao)-margem_geral) # altura
# 277mmx187mm # diumensões para a arte do background


#pdf.set_font('Arial', '', 14)

pdf.set_y(margem_geral-2)
pdf.set_right_margin(margem_geral - 5)
pdf.set_font('Arial', 'I', 8)
txt = text('Página %s de %s' % (pdf.page_no(), pdf.alias_nb_pages()))
pdf.cell(0, 0, txt, 0, 0, 'R')
pdf.set_right_margin(margem_texto)

pdf.set_x(margem_texto)
pdf.set_y(inicio_texto_y)
#pdf.write_html(text(htmlsimples))
pdf.write_html(text(htmlsimples))


    # Estava dando erro de identação
        response.title = "Certificado"

response.headers['Content-Type'] = 'application/pdf'
        return pdf.output('certificado',dest='S')


==================



Leandro Paz

未讀,
2017年9月21日 上午8:26:362017/9/21
收件者:web2py-users-brazil
Quanto ao wkhtmltopdf finalmente consegui fazer usa-lo no windows. Segue resumo do processo. o problema maior era que não estava copiando a pasta C:\Program Files\wkhtmltopdf\bin para  c:\python27
 
# para o wkhtmltopdf funcionar é necessário:
############################################
# No windows 
# instalar windows(MSVC) https://wkhtmltopdf.org/downloads.html
# Copiar a pasta C:\Program Files\wkhtmltopdf\bin para c:\python27
# exemplo no windows
import os
os.system("wkhtmltopdf http://www.google.com D:/teste.pdf")
        # referencias
############################################ 

Caso resolvam usar o pdfkit tem que fazer o processo acima, além de instalar o pdfkit através do terminal
import pdfkit
pdfkit.from_url('http://www.google.com', 'D:\micro.pdf')

Depois vou testar em produção o que e como instala-lo no servidor no meu caso o pythonanywhere. 

A qualidade do pdf é excelente!

Milton A

未讀,
2017年9月21日 上午9:01:322017/9/21
收件者:web2py-us...@googlegroups.com
Obrigado por compartilhar.

Lendo o que vc disse de ter que copiar a pasta, chegou a testar a forma que abaixo apresento?

os.system("C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf https://devblog.drall.com.br D:/teste.pdf");


--

Leandro Paz

未讀,
2017年9月21日 上午9:49:552017/9/21
收件者:web2py-users-brazil
Beleza, apenas coloquei a pasta program files entre aspas duplas

import os
os.system('C:/"Program Files"/wkhtmltopdf/bin/wkhtmltopdf https://devblog.drall.com.br D:/teste.pdf')

Pronto agora é desnecessário copiar a pasta.
Obrigado.

Leandro Paz

未讀,
2017年9月21日 晚上7:05:192017/9/21
收件者:web2py-users-brazil
Agora vem a segunda parte do problema, como instalar o wkhtmltopdf no pythonanywhere?

O modulo pdfkit eu instalei no terminal assim:
pip2.7 install --user pdfkit

Mas o wkhtmltopdf não sei como instala-lo, tentei assim:
aptitude install wkhtmltopdf

Não funcionou, entrei em contato com o suporte da pythonanywhere. 

Agradeço se alguém puder dar uma luz.

Leandro Paz

未讀,
2017年9月22日 上午9:36:492017/9/22
收件者:web2py-users-brazil
O suporte da pythoanywhere respondeu que não tem suporte para o wkhtmltopdf.

Segue resposta do suporte
Oi, 

Infelizmente isso não vai funcionar no PythonAnywhere :-( 


O melhor, 

Giles


Em 22/09/17 13:16, Leandro Paz escreveu:
Preciso wkhtmltopdf  para converter relatórios gerados em html para pdf. As chamadas para o wkhtmltopdf  são feitas no site através do pdfkit. 


2017-09-22 9:11 GMT-03: 00 Giles Thomas gi...@pythonanywhere.com > :
Oi, 

em 22/09/17 01:37, você escreveu:
Boa noite, como faço para instalar o wkhtmltopdf, disponível em https://wkhtmltopdf.org/downloads.html

tentei o seguinte no terminal

00:14 ~ $ sudo apt-get install wkhtmltopdf
sudo: unknown user: root
sudo: unable to initialize policy plugin


Mas não sei como proceder.

É possível incluir o wkhtmltopdf na bateria, conforme link a seguir
https://www.pythonanywhere.com/batteries_included/

Estou com uma aplicação pronta, apenas com esta pendencia.

Podemos configurar as coisas para que você possa executar o wkhtmltopdf dentro de um console no PythonAnywhere, mas não de uma tarefa agendada ou dentro do código de um site. Será que isso funciona para você? Em caso afirmativo, posso enviar-lhe instruções. 


O melhor, 

Giles 


Giles Thomas < gi...@pythonanywhere.com > 

PythonAnywhere: Desenvolva e hospede Python no seu navegador 
https://www.pythonanywhere.co m / > 

Um produto da PythonAnywhere LLP 
17a Clerkenwell Road, Londres EC1M 5RD ,
N.º de IVA do Reino Unido : GB 893 5643 79
Registrado na Inglaterra e no País de Gales como empresa número OC378414. 
Re gistered add ress: 28 Ely Place, 3rd Floor, London EC1N 6TD, Reino Unido

Leandro Paz

未讀,
2017年9月22日 上午9:45:332017/9/22
收件者:web2py-users-brazil
Será que vale a pena gastar um tempinho estudando o plugin appreport


Resumo da Saga:

- FPDF não atendeu plenamente a conversão de html para pdf, pois não entende css.
- wkhtmltopdf não funciona no pythoanywhere mas os pdf são ótimos
- docraptor muito fácil de usar porém é pago
- xhtml2pdf não consegui usa-lo nem a pau! 
 

Carlos Costa

未讀,
2017年9月22日 下午3:36:452017/9/22
收件者:web2py-us...@googlegroups.com
Não testei mas esse aqui parece interessante.
Não roda nada no servidor.
E consegue converter a partir de html.

Selecion o terceiro exemplo no combo pra ver como é.


--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsub...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsub...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--


Carlos J. Costa
Cientista da Computação  | BS Computer Science
Esp. Gestão em Telecom   |
PgC Telecom Mangement
<º))><

Leandro Paz

未讀,
2017年9月22日 晚上9:00:362017/9/22
收件者:web2py-users-brazil
Obrigado pessoal, o suporte da pythoanywhere recomendou o uso do weasyprint, por já está tudo instalado na pythoanywhere.

Consegui fazer rodar no servidor (pythoanywhere ) ainda não consegui fazer rodar localmente no windows, mas enfim... Rodando no servidor já está ótimo!

Tem duas forma de chamar o weasyprint, pode ser por linha de comando ou por uma api. Segue ambas as soluções:

Se for necessário instalar, não lembro mais se instalei ou não! kkkk
Basta no terminal da pythoanywhere digitar inclusive com o termo --user: 
pip2.7 install --user weasyprint

#############################################################################
# por linha de comando
import os
def modelo8():
os.system("weasyprint https://www.google.com.br /home/leandrojuazeiro/weasyprint-website.pdf")
pass

#############################################################################
# Pela API
from weasyprint import HTML
def modelo9():
    pdf_file = HTML("https://www.google.com.br").write_pdf()
    response.title="Certificado"
    response.headers['Content-Type']='application/pdf'
    return pdf_file

#####################################################################################
#O mais trabalhoso é se for pra preparar um html, pra usar em uma das funções acima na geração de um pdf, tem que preparar bem o html ! 
#Segue exemplo de html para gerar certificados

<html>
<head>
    <meta charset="utf-8">
    <style>
    @page {
             size: A4 landscape;
             margin-left: 10mm;
             margin-right: 10mm;
             margin-top: 10mm;
             margin-bottom: 7.8mm;

    }


    .primeira_pagina {
        width: 277mm;
        height: 190mm;
        top: 0mm;
        left: 0mm;
        background-size: 100%;
        background-image: url({{=URL('static','cert_todo.jpg')}});

    }
    .proxima_pagina {
        width: 277mm;
        height: 190mm;
        top: 0mm;
        left: 0mm;
        background-size: 100%;
        background-image: url({{=URL('static','praialinda.jpg')}});

    }


    </style>

</head>


<body>

    <div>
        <div class="primeira_pagina">
            <div style="position: absolute;
                        text-align: justify;
                        text-justify: inter-word;
                        margin-left: 10mm;
                        margin-right:10mm;
                        margin-top: 70mm;
                        margin-bottom: 0mm;">
                <p style=" font-size: 22px; line-height: 130%;">
                    Certificamos que <b>{name}</b>, portador(a) do CPF de número <b>{cpf}</b>, participou do/a <b>{evento}</b> entre os dias ... 
                </p>
            </div>

        </div>
    </div>

    <div>
        <div class="proxima_pagina">
        
            <center>Testando .... página 2</center>

        </div>
    </div

    <div>
        <div class="proxima_pagina">
   
           <center> <center>Testando .... página 3</center></center>

        </div>
    <div>

</body>


</html>

回覆所有人
回覆作者
轉寄
0 則新訊息