[卡国17天传说16]ASP会员管理第十六章线上生成PDF

作者: 分类: 联盟天地 发布于:2020-06-09 630次浏览 27条评论


第十六章 线上生成PDF
在网页上进行列印一直是很麻烦的事情,如果你只是单纯的想把资料列印下来,那幺浏览器自带的列印功能就可以满足你的需求,但如果你要做到更专业的列印,例如分页,自订纸张大小….等,那幺势必要将档案做汇出的动作,才能做到更专业的列印处理。
汇出档案的方式有很多,包括前一章的汇出Excel,但是如果要以列印为考量的话PDF似乎是个更好的选择。包括它跨平台的优点,不管在任何作业系统,只要能开启PDF,就能确保列印出来的格式都会相同。还有自订页面大小,可以用来印标籤或是连续报表,不再拘限于只能列印A4纸张大小的资料。
要在ASP上生成PDF的方式到目前我看到较成熟的也只有ASPPdf,由于它和ASPJpeg,ASPUpload一样是付费软体,我们可以先在官网上下载30天试用版。

ASPPdf预设只能用英文字,所以安装完成后,我们还需要一个中文字型档,才能生成中文字。笔者试验的结果是,不见得每种中文字型档案它都能正确显示,你可以在这里下载到可以用的中文字型档。

下载完成后,在网页根目录建立一个Fonts的资料夹,并且把这个档案放在里面。
上面的步骤都完成后,接下来要介绍一些ASPPdf的参数。
Set PDF = Server.CreateObject'建立ASPPdf物件
Set Param = PDF.CreateParam'建立参数
Set Doc = PDF.CreateDocument'建立文件
Set Table = Doc.CreateTable)'建立表格
Table.Font = Doc.Fonts.LoadFromFile & "/" & "TW-Sung-95_1.ttf")'设定字型
Param.Set'字型参数
Set Page = Doc.Pages.Add'开新页面,页面宽与高度
Page.Canvas.DrawTable Table, Param '将设定好的资料及表格写到页面上
要注意的是,如果需要用到中文字型,那幺就必需在上面先指定字型。
接着我们在显示会员资料这个页面最底下加上了汇出PDF的按钮,连结到这支程式。以下是ExprtPDF.asp的程式码
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>



<%
ID = request
SQL = "SELECT UserId,UserName,Sex,Tel,Mobile,A2.Name As City," & _
"A3.Name As District,Address" & _
" From " & _
" LEFT JOIN DistrictData A3 ON A1.City = A3.ParentID And A1.District = A3.ID" & _
"Where A1.ID = '"&ID&"'"
Set rs = conn.execute
if rs.eof then
response.Write;history.go;")
response.End
else
UserId = rs
UserName = rs
Sex = rs
Tel = rs
Mobile = rs
City = rs
District = rs
Address = City + District + rs
end if
FilePath = Server.MapPath & "/" & "ShowMember.pdf"'PDF档案路径
Set PDF = Server.CreateObject'建立ASPPdf物件
Set Param = PDF.CreateParam'建立参数
Set Doc = PDF.CreateDocument'建立文件
Set Table = Doc.CreateTable'建立表格
Table.Font = Doc.Fonts.LoadFromFile & "/" & "TW-Sung-95_1.ttf")'设定字型
Param.Set'字型参数
With Table.Rows
.Cells.Width = 60
.Cells.Width = 135
End With
'合併储存格
Table.Colspan = 2
'写入表头
LabelArray = array
for i = 0 to UBound
Table.Rows.Height = 24'列高
Table.Rows.Cells.AddText LabelArray,Param
next
With Table
.Rows.Cells.AddText UserId,Param
.Rows.Cells.AddText UserName,Param
.Rows.Cells.AddText Sex,Param
.Rows.Cells.AddText Tel,Param
.Rows.Cells.AddText Mobile,Param
.Rows.Cells.AddText Address,"alignment=center;size=8;valignment=middle;"
End With
'============开新页面==========
Set Page = Doc.Pages.Add'开新页面,页面宽与高度
Param.Clear'将属性清空
Param = 10 'x轴位置
Param = 190'y轴位置
Page.Canvas.DrawTable Table, Param '将设定好的资料及表格写到页面上
'存档,若存在相同档名则覆盖
FileName = Doc.Save
Set Doc = Nothing
Set Pdf = Nothing
response.Write
%>
汇出的效果就像这样,不需要下载也可以直接按下列印的按钮做列印,再搭配印表机纸张的设定就可以印连续报表了。
[卡国17天传说16]ASP会员管理第十六章线上生成PDF

<<上一篇: