2008-7-6 22:54:05
 
利用asppdf将html转成pdf文件
前文曾提到过,使用asppdf的ImportFromUrl转换html到pdf时,在非unicode时,会出现乱码。虽然asppdf组件本身不能 够解决这个问题,但我们可以换一个思路解决这个问题。当然这个只是本文的一部分,先来看看怎么样使用ImportFromUrl吧。
源码如下:
‘来源于user manual
Set Pdf = Server.CreateObject("Persits.Pdf")
Set Doc = Pdf.CreateDocument
Doc.ImportFromUrl "http://www.persits.com"

Filename = Doc.Save( Server.MapPath("importfromurl.pdf"), False )

所有网页charset为utf-8的都能够转换并显示正常,但类似GB2312之类的就不行了哦。

不过ImportFromUrl还可以导入一个静态html文件,也就是说我们可以将一个网页读入一个字符串中,然后将这个字符串传值给ImportFromUrl,也可以实现将html转成pdf文件的目的。

那么,显示不正常的乱码问题也就有了解决的思路了,先将文件通过microsoft.xmlhttp读取回来,然后转码,如下源码所示:

str = GetBody("http://blog.const.net.cn")

Set Pdf = Server.CreateObject("Persits.Pdf")
Set Doc = Pdf.CreateDocument
Doc.ImportFromUrl str

Filename = Doc.Save( Server.MapPath("importfromurl.pdf"), False )

Function GetBody(Url)
  Dim objXML
        On Error Resume Next
        Set objXML = CreateObject("Microsoft.XMLHTTP")
        With objXML
        .Open "Get", Url, False, "", ""
        .Send
        GetBody = .ResponseBody
        End With
        GetBody=BytesToBstr(GetBody,"GB2312")
        Set objXML = Nothing
End Function


Function BytesToBstr(strBody,CodeBase)
        dim objStream
        set objStream = Server.CreateObject("Adodb.Stream")
        objStream.Type = 1
        objStream.Mode =3
        objStream.Open
        objStream.Write strBody
        objStream.Position = 0
        objStream.Type = 2
        objStream.Charset = CodeBase
        BytesToBstr = objStream.ReadText
        objStream.Close
        set objStream = nothing
End Function
没有测试过,只是一个思路。希抛砖引玉。
[Blog.Const.Net.Cn]

[Blog.Const.Net.Cn]

永久链接地址:知识库 利用asppdf将html转成pdf文件
 
类别:知识库|浏览(51)