【ASP】透過ASPPDF元件來匯出PDF檔
引用ASPPDF元件,首先要到官網下載,並且安裝之。
ASPPDF元件不僅可以產生PDF檔,也可以產生成圖片檔及BarCode等,詳見官網。
程式部分:
'定義PDF 物件
Set PDF = Server.CreateObject("Persits.Pdf") '建立ASPPdf物件
Set Param = PDF.CreateParam '建立參數
Set Param_header = PDF.CreateParam '建立參數(計畫標題)
Set Param_M = PDF.CreateParam '建立參數(金額)
Set Doc = PDF.CreateDocument '建立文件 Create empty document
' Set various document properties 文件屬性
Doc.Title = "Jason" '文件標題
Doc.Creator = "By Jason Lian" '文件建立者
Param.Set("alignment=center;size=12;valignment=middle;") '字型參數
Param_header.Set("alignment=center;size=14;valignment=middle;") '字型參數(計畫標題)
Param_M.Set("alignment=right;size=12;valignment=middle;") '字型參數
sqlstr="SELECT * FROM report WHERE (IsDelete = 0) ORDER BY Type"
set rs=Exec_Record(sqlstr)
if not rs.eof then
'Create table '建立表格
Set Table = Doc.CreateTable("width=700; height=400; Rows=12; Cols=7; Border=1; CellSpacing=-1; cellpadding=2 ")
Table.Font = Doc.Fonts.LoadFromFile(Server.MapPath("/Fonts") & "/" & "kaiu.ttf") '設定字型
FilePath = Server.MapPath("/tmppdf") & "/" & title & ".pdf" 'PDF檔案路徑
' Set column widths 設定欄位寬度
With Table.Rows(1)
.Cells(1).Width = 45
.Cells(2).Width = 120
.Cells(3).Width = 120
.Cells(4).Width = 120
.Cells(5).Width = 120
.Cells(6).Width = 115
.Cells(7).Width = 50
End With
'合併儲存格(計畫標題)
Table(1,1).Colspan = 7
Table.Rows(1).Height =30 '列高
'計畫標題
With Table.Rows(1)
.Cells(1).AddText title, Param_header
End With
'項目標題
LabelArray = array("項次","工程經費項目","計畫核定經費","已發生計畫經費","結餘款","計畫經費已發生率","狀態")
'粗體可加<b></b>
for i = 0 to UBound(LabelArray)
With Table.Rows(2)
.Cells(i+1).AddText LabelArray(i), Param
End With
next
rcountTag = trim(cstr(rs.recordcount)) '總筆數
i=0
do while not rs.eof
i=i+1
'總計(A+B+C)
if trim(rs("type"))="A" or trim(rs("type"))="B" or trim(rs("type"))="C" then
sum1=sum1+rs("approved_cost")
sum2=sum2+rs("runed_cost")
sum3=sum3+rs("surplus")
end if
'計畫經費已發生率
rate=FormatPercent(rs("runed_cost")/rs("approved_cost"),0)
'狀態
if rate > FormatPercent(0.95,0) then
status="警戒"
else
status="正常"
end if
'內容
With Table.Rows(i+2)
.Cells(1).AddText trim(rs("Type")) ,Param
.Cells(2).AddText trim(rs("Type_name")) ,Param
.Cells(3).AddText mid(FormatCurrency(rs("approved_cost"),0),4) ,Param_M
.Cells(4).AddText mid(FormatCurrency(rs("runed_cost"),0),4) ,Param_M
.Cells(5).AddText mid(FormatCurrency(rs("surplus"),0),4) ,Param_M
.Cells(6).AddText rate,Param
.Cells(7).AddText status,Param
End With
rs.movenext
loop
'計畫經費已發生率
sum_rate=FormatPercent(sum2/sum1,0)
'狀態
if sum_rate > FormatPercent(0.95,0) then
sum_status="警戒"
else
sum_status="正常"
end if
'總計(A+B+C)
Table(11,1).Colspan = 2
With Table.Rows(11)
.Cells(1).AddText "總計(A+B+C)" ,Param
.Cells(3).AddText mid(FormatCurrency(sum1,0),4) ,Param_M
.Cells(4).AddText mid(FormatCurrency(sum2,0),4) ,Param_M
.Cells(5).AddText mid(FormatCurrency(sum3,0),4) ,Param_M
.Cells(6).AddText sum_rate,Param
.Cells(7).AddText sum_status,Param
End With
'註記
remark=" 計畫經費已發生率逾95﹪ 狀態:警戒"
Table(12,1).Colspan = 7
Table.Rows(12).Cells(1).CellPadding = 8
Table.Rows(12).Cells(1).AddText remark ,Param_M
'另外寫法
'Table.At(12, 1).AddText remark ,Param_M
'============開新頁面==========
Set Page = Doc.Pages.Add(750, 600) '開新頁面,頁面寬與高度
Param.Clear '將屬性清空
Param("x") = (Page.Width - Table.Width) / 2 'x軸位置
Param("y") = Page.Height - 20 'y軸位置
Page.Canvas.DrawTable Table, Param '將設定好的資料及表格寫到頁面上
'存檔,若存在相同檔名則覆蓋
FileName = Doc.Save(FilePath, true)
end if
rs.close : set rs = nothing
Set Doc = Nothing
Set Pdf = Nothing
'下載PDF
Response.Write "Success! Download your PDF file <A HREF=/tmppdf/" & Filename & ">here</A>"
PDF內容畫面:

參考資源:
ASPPDF官網
ASPPDF官方手冊
留言
張貼留言