Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rafa-martin

converter boleto em pdf

Recommended Posts

tenho um sistema de boleto e preciso converter esses meu boletos em pdf.

 

estou usando o fpdf.

 

aí faço da seguinte forma:

 

<!--#include file="fpdf.asp"-->
<%
Set pdf=CreateJsObject("FPDF")
pdf.CreatePDF()
pdf.SetPath("fpdf/")
pdf.SetFont "Arial","",16
pdf.Open()
pdf.AddPage()
pdf.Cell 40,10,<!--#include file="boleto_ger.asp"-->
'pdf.Cell 40,10,"Olá mundo"
pdf.Close()
pdf.Output()
%>

só que na linha pdf.Cell 40,10,<!--#include file="boleto_ger.asp"-->, dá um erro de sintaxe.

 

preciso colocar o arquivo que gera o boleto nessa linha e também passar o parâmetro nosso_num, para saber qual boleto estou gerando.

 

alguém pode me dar uma luz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

então, mais como posso pegar o valor do html dentro de uma página asp?

 

por exemplo: eu tenho a pagina gerar_boleto.asp. ai quando eu clicar num botão eu precisaria chamar essa página, pegar o html dela e depois gerar o pdf.

 

minha dúvida é como pegar esse html depois q página gerar_boleto.asp já foi processada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o include não pode ficar ai...

use session ou uma variável normal como sugerido acima pelo nosso amigo Ronaldo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi.

 

só não sei como eu vou pegar o html da página.

 

pq imaginem o seguinte: eu tenho uma lista de boletos. ao lado de cada, terá um botão para fazer a conversão. já tenho a página que gera o boleto. o que não sei, é que como eu vou clicar nesse botão (que gera o pdf) gerar o boleto e pegar o html e colcar numa variável.

 

entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem que fazer assim:

A mesma pagina que voce postou coloca o include no inicio, abra a pagina include e vai colocando tudo dentro de uma variave:

boletocru = “........................”boletocru = boletocru & “”

Depois você chama o boletocru la onde você tinha colocado o include inicial (não no inicio onde ele vai estar agora e sim onde você quer chamar o boleto)

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade vc irá "montar" seu HTML na variável.

Compartilhar este post


Link para o post
Compartilhar em outros sites

então, mais eu preciso executar esse retorno do html. eu fiz o seguinte

 

<!--#include file="fpdf.asp"-->
<%
cod = request("cod")
nosso_num = request("nosso_num")

pagina = "http://www.site.com.br/boleto/boleto_ger.asp?cod="&cod&"&nosso_num="&nosso_num
'Dim OBJ_HTML, strReturn
'Set OBJ_HTML = Server.CreateObject("Microsoft.XMLHTTP")
'OBJ_HTML.Open "GET", ""& pagina &"", False
'OBJ_HTML.Send
'Dados = OBJ_HTML.responseText
'Set OBJ_HTML = Nothing
'Response.Write "<font style='font-family:tahoma;font-size:11px' color=black>" & replace(server.HTMLEncode(dados),chr(13),"<br>") & "</font>"

Set pdf=CreateJsObject("FPDF")
pdf.CreatePDF()
pdf.SetPath("fpdf/")
pdf.SetFont "Arial","",16
pdf.Open()
pdf.AddPage()
pdf.Cell 40,10,replace(server.HTMLEncode(dados),chr(13),"<br>")
pdf.Close()
pdf.Output()
%>

só que vem o retorno do html.

 

o que eu preciso é executar esse retorno html, porque executando ele vai aparecer meu boleto gerado e aí esse boleto que gerou eu coloco do pdf.

 

é como seeu clicasse no arquivo html duas vezes para abrir no browser o resultado final.

 

entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

então, mais ai vou ter q fazer tudo de novo. fazer uma página, sendo que a funcionalidade já existe.

 

aí é froyd. não tem como eu pegar o html e jogar o resultado final do html no pdf?

Compartilhar este post


Link para o post
Compartilhar em outros sites

vc até pode fazer isso para pegar seu HTML.

 

 StrUrl = "http://www.teste.com"  ' ponha aqui um site verdadeiro
          
                Set objXMLHTTP = CreateObject("Microsoft.XMLHTTP")
                        objXMLHTTP.open "get", StrUrl,false
                        objXMLHTTP.setRequestHeader "content-type", "text/html; charset=ISO-8859-1"
                        objXMLHTTP.send
                        pagina = objXMLHTTP.getResponseHeader("Date")
                        strXmlHttp = objXMLHTTP.responseText
                set objXMLHTTP = nothing

ou também usar assim:

 

<%
' HTML Parser
' ------------------------------------------------------------------------------
Class clsHTMLParser
' ------------------------------------------------------------------------------
	Private mStrHTML
	Private mObjRegExp
	Private mObjMatches
	Private mObjMatch
	Public Title
	Public Keywords
	Public Description
' ------------------------------------------------------------------------------
	Public Property Let HTML(ByRef pStrHTML)
		mStrHTML = pStrHTML

		Set mObjRegExp = New RegExp
		mObjRegExp.IgnoreCase = True

		Call ParseTitle()
		Call ParseDescription()
		Call ParseKeywords()

		Set mObjMatch = Nothing
		Set mObjMatches = Nothing
		Set mObjRegExp = Nothing

	End Property
' ------------------------------------------------------------------------------
	Public Property Get HTML()
		HTML = mStrHTML
	End Property
' ------------------------------------------------------------------------------
	Private Sub ParseTitle()
		Title = ""
		mObjRegExp.Pattern = "<TITLE>([^<]*)</TITLE>"
		Set mObjMatches = mObjRegExp.Execute(mStrHTML)
		If mObjMatches.Count = 0 Then Exit Sub
		Title = mObjMatches.item(0).Value
		Title = Replace(Title, "<TITLE>", "", 1, -1, vbTextCompare)
		Title = Replace(Title, "</TITLE>", "", 1, -1, vbTextCompare)
	End Sub
' ------------------------------------------------------------------------------
	Private Sub ParseDescription()
		Description = ""
		mObjRegExp.Pattern = "<META[^>]+(name=""description""|content=""([^""]*)"")[^>]+(name=""description""|content=""([^""]*)"")[^>]*>"
		Set mObjMatches = mObjRegExp.Execute(mStrHTML)
		If mObjMatches.Count = 0 Then Exit Sub
		Description = mObjMatches.item(0).Value
		Description = Mid(Description, InStr(1, Description, "content=""", vbTextCompare) + 9)
		Description = Mid(Description, 1, InStr(1, Description, """", vbTextCompare) -1)
	End Sub
' ------------------------------------------------------------------------------
	Private Sub ParseKeywords()
		Keywords = ""
		mObjRegExp.Pattern = "<META[^>]+(name=""keywords""|content=""([^""]*)"")[^>]+(name=""keywords""|content=""([^""]*)"")[^>]*>"
		Set mObjMatches = mObjRegExp.Execute(mStrHTML)
		If mObjMatches.Count = 0 Then Exit Sub
		Keywords = mObjMatches.item(0).Value
		Keywords = Mid(Keywords, InStr(1, Keywords, "content=""", vbTextCompare) + 9)
		Keywords = Mid(Keywords, 1, InStr(1, Keywords, """", vbTextCompare) -1)
	End Sub
' ------------------------------------------------------------------------------
	Public Function GetURL(ByRef pStrURL)

		Dim lObjSpider
		Dim strText

		If pStrURL = "" Then Exit Function

		On Error Resume Next

		' Different variations of XML objects
		'Set lObjSpider = Server.CreateObject ("MSXML2.XMLHTTP.3.0")
		'Set lObjSpider = Server.CreateObject ("MSXML2.ServerXMLHTTP")
		Set lObjSpider = Server.CreateObject ("Microsoft.XMLHTTP")
		

		' Could not create Internet Control
		If Err Then
			GetURL = "Error: " & Err.Description
			Exit Function
		End If
		
		On Error Goto 0

		With lObjSpider
			.Open "GET", pStrURL, False, "", ""
			.Send
			GetURL = .ResponseText
		End With
		Set LobjSpider = Nothing

		HTML = GetURL
		
	End Function
' ------------------------------------------------------------------------------
End Class
' ------------------------------------------------------------------------------
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

então, xanburzum. o problema é que das duas formas, o que vai para o pdf é o código fonte do html.

 

eu preciso que o resultado final vá para o pdf.

 

 

e então como colocar o resultado final no pdf? alguma dica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

recupere os dados atribua na variável e concatene no pdf

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi a questão de concatenar no pdf o retorno do html.

 

o que estou questionando é que o vai para o pdf é código html e não o resultado final.

 

por exemplo: quero q apareã no html uma tabela com borda. só que da forma que estamos falando, ele vai para o pdf da seguinte maneira:

 

<table border="0"><tr><td>teste</td></tr></table>

 

no pdf tem que ir o desenho da tabela com borda.

 

e da forma q estou fazendo abaixo e as duas formas q vc surgeriu está indo apenas o código html (texto) que é <table border="0"><tr><td>teste</td></tr></table>, como citei no exemplo acima

 

cod = request("cod")
nosso_num = request("nosso_num")

pagina = "http://www.site.com....to_ger.asp?cod="&cod&"&nosso_num="&nosso_num
'Dim OBJ_HTML, strReturn
'Set OBJ_HTML = Server.CreateObject("Microsoft.XMLHTTP")
'OBJ_HTML.Open "GET", ""& pagina &"", False
'OBJ_HTML.Send
'Dados = OBJ_HTML.responseText
'Set OBJ_HTML = Nothing
'Response.Write "<font style='font-family:tahoma;font-size:11px' color=black>" & replace(server.HTMLEncode(dados),chr(13),"<br>") & "</font>"

 

pdf.Cell 40,10,replace(server.HTMLEncode(dados),chr(13),"<br>")

 

entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz assim:

Cria o boleto já em PDF e salve em uma pasta ou no final pode enviar por email também.

Set PDF = Server.CreateObject("Persits.PDF")

Set StartDoc = Pdf.CreateDocument

Set Page = StartDoc.Pages.Add

Page.Canvas.DrawText "N°. "&VARIAVEL, "x=0; y=550; width=570; alignment=right; size=15", StartDoc.Fonts("Helvetica")

Page.Canvas.DrawText "

TEXTO "&VARIAVEL&" TEXTO "&VARIAVEL&" TEXTO
", "x=30; y=500; width=540; size=15; spacing=2; html=true", StartDoc.Fonts("Helvetica")

aqui é só um exemplo, voce tem que adaptar ao seu uso, ou seja monte o boleto ja em PDF

Filename = StartDoc.Save( Server.MapPath("PASTA/"&NOMEDOARQUIVO&".pdf"), false )

depois se quiser pode abaixo enviar por e-mail

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.