Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom, alguns meses atrás, quebrei a cabeça para criar um pdf que resgatasse informações do banco de dados, criava o pdf e tals.
Procurando na net e no site do componente, as informações eram muito pobres e não atendiam o que precisava.
Depois de algumas dicas no forum, fiquei de postar o resultado, que segue abaixo:
<%
set conn=server.createobject("adodb.connection")
set rs=server.createobject("adodb.recordset")
conn.open strconexao
sql = "select * from tabela01 where id="&Session("pedid")
set rs = conn.Execute(sql)
set rs4=server.createobject("adodb.recordset")
clsql = "select * from tabela02 where id="&rs("idcliente")
set rs4 = conn.Execute(clsql)
set rs6=server.createobject("adodb.recordset")
vdsql = "select nome from tabela03 where id="&rs4("atendido")
set rs6 = conn.Execute(vdsql)
set rs7=server.createobject("adodb.recordset")
pgsql = "select nome from tabela04 where id="&rs("formpag")
set rs7 = conn.Execute(pgsql)
set rs5=server.createobject("adodb.recordset")
ctsql = "select cidade from tabela05 where id="&rs4("cidade")
set rs5 = conn.Execute(ctsql)
set rs2=server.createobject("adodb.recordset")
stct="SELECT * from tabela06 where idpedido="&Session("pedid")
set rs2 = conn.execute(stct)
set rs3=server.createobject("adodb.recordset")
set rs8=server.createobject("adodb.recordset")
sql8 = "Select * from tabela07 where idcli="&Session("cliente")
Set rs8 = conn.Execute(sql8)
Set PDF = Server.CreateObject("Persits.Pdf")
Set Param = PDF.CreateParam
Set TextParam = PDF.CreateParam
Set TextfootParam = PDF.CreateParam
Set Doc = PDF.CreateDocument
' Create table with one row (header), and 5 columns
Set Table = Doc.CreateTable("width=500; height=20; Rows=1; Cols=4; Border=0; CellSpacing=-1; cellpadding=2 ")
Table.Font = Doc.Fonts("Helvetica")
Set HeaderRow = Table.Rows(1)
Param.Set("alignment=center")
Param.Add("html=true")
With HeaderRow
.BGColor = "GREY"
.Cells(1).AddText "<b>Produto</b>", Param
.Cells(2).AddText "<b>Preço Un.</b>", Param
.Cells(3).AddText "<b>Quantidade</b>", Param
.Cells(4).AddText "<b>SubTotal<b>", Param' Set column widths
With Table.Rows(1)
.Cells(1).Width = 180
.Cells(2).Width = 60
.Cells(3).Width = 70
.Cells(4).Width = 70
End With
' Populate table with data
param.Set "expand=true" ' expand cell vertically
Do While Not rs2.EOF
proct="SELECT nome,peso from tabela09 where id="&rs2("prodid")
set rs3 = conn.execute(proct)
Set Row = Table.Rows.Add(20) ' row height
param.Add "alignment=left"
Row.Cells(1).AddText rs3("nome") &" "& rs3("peso"), param
Row.Cells(2).AddText "R$ " &pdf.FormatNumber(rs2("precoun"), "precision=2, delimiter=true"), param
param.Add "alignment=center"
Row.Cells(3).AddText rs2("qtd"), param
Row.Cells(4).AddText "R$ " &pdf.FormatNumber(rs2("preco"), "precision=2, delimiter=true"), param
rs2.MoveNext
Loop
Set Rowfin = Table.Rows.Add(20)
param.add "alignment=left"
Rowfin.Cells(1).AddText "Saldo Anterior:" , param
param.add "alignment=center"
Rowfin.Cells(4).AddText "R$ " &pdf.FormatNumber(Session("valdevi"), "precision=2, delimiter=true, european=true"), param
Set Rowfin = Table.Rows.Add(20)
param.add "alignment=left"
Rowfin.Cells(1).AddText "Total:" , param
param.add "alignment=center"
Rowfin.Cells(4).AddText "R$ " &pdf.FormatNumber(rs("valortot"), "precision=2, delimiter=true, european=true"), param
' Render table on document
Set Page = Doc.Pages.Add(632, 792)
Param.Clear
Param("x") = (Page.Width - Table.Width) / 2 ' center table on page
Param("y") = Page.Height - 190
Param("MaxHeight") = 500
FirstRow = 2
Do While True
LastRow = Page.Canvas.DrawTable( Table, Param )
' Print record numbers
TextParam("x") = 50 '(Page.Width - Table.Width) / 2
TextParam("y") = Page.Height - 80
TextParam.Add("color=black")
TextParam.Add("html=true")
TextStr= "<b>Nome:</b> "&rs4("nome")&"<br><b>Endereço:</b> "&rs4("endereco")&"<br><b>Bairro:</b> "&rs4("bairro")&"<br><b>Cidade:</b> "&rs5("cidade")&"<br><b>Ponto de Referencia:</b> "&rs4("ptoref")&"<br><b>Telefone:</b> "&rs4("tel")&" <b>Celular:</b> "&rs4("cel")&"<br><b>Vendedor:</b> "&rs6("nome")&"<br><b>Data de Emissão:</b> "& Date()
'TextStr="Records "&FirstRow-1&" to "&LastRow-1&" of "&Table.Rows.Count-1
Page.Canvas.DrawText TextStr, TextParam, doc.fonts("Courier-Bold")
TextfootParam("x") = 50 '(Page.Width - Table.Width) / 2
TextfootParam("y") = Page.Height - 600
TextfootParam.Add("color=black")
TextfootParam.Add("html=true")
TextfootStr= "<b>Forma de pagamento: </b>"&rs7("nome")&"<p><b>Protocolo de Entrega:</b><p><b>Nome:</b> "&rs4("nome")&" <b>Valor da compra: </b>"&FormatNumber(rs("valortot"),2)&"<br><b>Endereço:</b> "&rs4("endereco")&"<br><b>Bairro:</b> "&rs4("bairro")&"<br><b>Cidade:</b> "&rs5("cidade")&"<br><b>Ponto de Referencia:</b> "&rs4("ptoref")&"<br><b>Telefone:</b> "&rs4("tel")&" <b>Celular:</b> "&rs4("cel")&"<br><b>Vendedor:</b> "&rs6("nome")&"<br><b>Data de Emissão:</b> "& Date()&"<br><b>Assinatura:<br>RG:</b>"
'TextStr="Records "&FirstRow-1&" to "&LastRow-1&" of "&Table.Rows.Count-1
Page.Canvas.DrawText TextfootStr, TextfootParam, doc.fonts("Courier-Bold")
if LastRow >= Table.Rows.Count Then Exit Do ' entire table displayed
' Display remaining part of table on the next page
Set Page = Page.NextPage
Param.Add( "RowTo=1; RowFrom=1" ) ' Row 1 is header.
Param("RowFrom1") = LastRow + 1 ' RowTo1 is omitted and presumed infinite
FirstRow = LastRow + 1Set Image = Doc.OpenImage(Server.MapPath( "logo01.jpg" ) )
Page.Canvas.DrawImage Image, "x=40, y=720"
Set Image = Doc.OpenImage(Server.MapPath( "logo02.jpg" ) )
Page.Canvas.DrawImage Image, "x=360, y=720"
Set Image = Doc.OpenImage(Server.MapPath( "logo03.jpg" ) )
Page.Canvas.DrawImage Image, "x=450, y=720"
Set Image = Doc.OpenImage(Server.MapPath( "logo04.jpg" ) )
Page.Canvas.DrawImage Image, "x=500, y=720"
Filename = Doc.Save( Server.MapPath("pedido-"&rs("id")&".pdf"), False )
response.write "<p><font color='blue'><b>Pedido efetuado com sucesso!<p> Dados inseridos no banco de dados e arquivo pdf gerado com sucesso!</b>"
response.write "<br>Clique <a href=" & Filename & " target='_blank'>aqui</a> para visualizar o arquivo.</font>"
SET AspPdf = Nothing
SET Doc = Nothing
SET Page = Nothing
SET Font = Nothing
SET Param = Nothing
End If
%>
Espero que ajude
muito bom...