Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

有没有谁用过AspPdf,怎样将当前的asp.net页面转换成pdf格式?谢谢!

54 views
Skip to first unread message

tyrbl

unread,
Jan 7, 2008, 1:09:00 AM1/7/08
to
现在项目要求将已经做好的asp.net页面生成pdf格式,本来想用免费软件,但是都不成功,现在想用ASPPDF.安装并导入了dll

但是运行时却报一个错说是找不到我写转换代码的页面!
代码如下:

Dim objPdf As IPdfManager = New PdfManager
Dim objDoc As IPdfDocument = objPdf.CreateDocument(Missing.Value)
//
本来是想将当前页面转成pdf的,但是无论是“http://localhost/AspPDF/WebForm1.aspx”还是“../AspPDF/WebForm1.aspx”都报一个URL错误的异常!
objDoc.ImportFromUrl("http://www.126.com", Missing.Value,
Missing.Value, Missing.Value)
Dim strFileName = objDoc.Save(Server.MapPath("printOut.pdf"), False)

运行代码异常如下:

Server Error in '/AspPDF' Application.
--------------------------------------------------------------------------------

The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its
dependencies) could have been removed, had its name changed, or is
temporarily unavailable. Please review the following URL and make sure that
it is spelled correctly.

Requested Url: /AspPDF/WebForm1.aspx


--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:1.1.4322.2407; ASP.NET
Version:1.1.4322.2407


请大家帮我想想办法,分不够再加!

秦风意动(Kimm King)

unread,
Jan 7, 2008, 2:55:01 AM1/7/08
to
你用的是什么版本?
为什么我的没有这个方法:objDoc.ImportFromUrl?
--
Be good @ Java & Dotnet.
Like OpenSource FrameWork,New Technique,especially Between different Platform.


“tyrbl”编写:

秦风意动(Kimm King)

unread,
Jan 7, 2008, 3:16:02 AM1/7/08
to
换了最新的1.5的asppdf
用的dll是1.6的


试了可以,但是不支持中文


using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using ASPPDFLib;
using System.Reflection;

public partial class _1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
IPdfManager objPdf = new PdfManager();

// Create empty document
IPdfDocument objDoc = objPdf.CreateDocument(Missing.Value);
objDoc.ImportFromUrl("http://localhost:2592/test1/2.aspx",
Missing.Value, Missing.Value, Missing.Value);

String strFilename = objDoc.Save(Server.MapPath("baidu.pdf"), false);
}
}

--
Be good @ Java & Dotnet.
Like OpenSource FrameWork,New Technique,especially Between different Platform.


“tyrbl”编写:

> 现在项目要求将已经做好的asp.net页面生成pdf格式,本来想用免费软件,但是都不成功,现在想用ASPPDF.安装并导入了dll

秦风意动(Kimm King)

unread,
Jan 7, 2008, 3:19:02 AM1/7/08
to
你的问题在于 你访问自己的程序所在的url不对
与asppdf无关

在设计模式的页面上右键 点击 在浏览器中查看


--
Be good @ Java & Dotnet.
Like OpenSource FrameWork,New Technique,especially Between different Platform.


“秦风意动(Kimm King)”编写:

秦风意动(Kimm King)

unread,
Jan 7, 2008, 3:24:01 AM1/7/08
to
关于中文的问题
请参照:
http://bbs.et8.net/bbs/printthread.php?p=9009594

--
Be good @ Java & Dotnet.
Like OpenSource FrameWork,New Technique,especially Between different Platform.


“tyrbl”编写:

> 现在项目要求将已经做好的asp.net页面生成pdf格式,本来想用免费软件,但是都不成功,现在想用ASPPDF.安装并导入了dll

tyrbl

unread,
Jan 7, 2008, 3:31:00 AM1/7/08
to
谢谢 秦风意动(Kimm King) 我记得我前一个关于itextSharp 的帖子也是您帮我回答的!再次感谢!
我用的也是1.6 的版本(1.6.0.9)。

请问您能成功将当前的asp.net 页面转成pdf格式吗?我的代码和你的代码没有什么太大的区别啊!我用的是vb.net vs 2003
我们的项目是给国外的公司做的,所以没有汉语!
我做了一点修改,又报了一个新的异常。
修改如下:
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb"
Inherits="TestAspPdf.WebForm1"%>
在html 添加了 3个引用:
<%@ Import Namespace="ASPPDFLib" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Reflection" %>

新的异常如下:
Exception Details: System.Runtime.InteropServices.COMException:
MSXML2::ServerXMLHTTP Error: The attempt to connect to the server failed.

Source Error:


Line 38: Dim objDoc As IPdfDocument =
objPdf.CreateDocument(Missing.Value)
Line 39:
Line 40: objDoc.ImportFromUrl("http://www.google.com",
Missing.Value, Missing.Value, Missing.Value)
Line 41: Dim strFileName =
objDoc.Save(Server.MapPath("printOut.pdf"), False)
Line 42:

是第40 行抛出的异常!
“秦风意动(Kimm King)”编写:

tyrbl

unread,
Jan 7, 2008, 3:44:00 AM1/7/08
to
再跑一次没有异常,但页面也没有转成pdf,什么都没发生!

真是郁闷!

“tyrbl”编写:

tyrbl

unread,
Jan 7, 2008, 4:54:01 AM1/7/08
to
您能将您的运行成功的完整代码发一份给我吗?我的邮箱是hlq...@126.com

谢谢!

我的代码既不报异常,也没有运行成功!

“秦风意动(Kimm King)”编写:

秦风意动(Kimm King)

unread,
Jan 7, 2008, 7:36:00 AM1/7/08
to
网页生成pdf文件。(html转pdf)(带效果图)
详细内容见我的blog:
http://blog.csdn.net/KimmKing/archive/2008/01/07/2029351.aspx
在此介绍 两种方法。

一个是asppdf;一个是abcpdf。

都是收费的组件。需要注册码,但是也有破解的和trial的。

asppdf:http://www.persits.com/asppdf.exe
(可以在http://www.asppdf.com/download.html输入一个email获取一个序列号)

abcpdf:http://down.chinaz.com/soft/4509.htm (带有注册码)

asp.net2.0下测试:

秦风意动(Kimm King)

unread,
Jan 7, 2008, 9:24:04 AM1/7/08
to
网页生成pdf文件。(html转pdf)(带效果图)
代码和介绍,图片参见我的blog:
http://blog.csdn.net/KimmKing/archive/2008/01/07/2029351.aspx

秦风意动(Kimm King)

unread,
Jan 7, 2008, 11:39:00 PM1/7/08
to
btw,其内部用xmlhttp来获取网页内容,ms不支持代理。

--
Be good @ Java & Dotnet.
Like OpenSource FrameWork,New Technique,especially Between different Platform.


“秦风意动(Kimm King)”编写:

tyrbl

unread,
Jan 8, 2008, 12:04:02 AM1/8/08
to
,我又测试了一下,可以成功将本机上的page转换成pdf,但是每转换一次就会保存一份pdf文件。如何有很多人访问,则会占用很大的空间,能否直接将pdf文件显示出来?

另外,我在sample里成功转换,但是在真正的项目里却没有陈功,是否aspPdf 不能转换图片,或者还有什么其它的限制?


“秦风意动(Kimm King)”编写:

秦风意动(Kimm King)

unread,
Jan 8, 2008, 1:12:01 AM1/8/08
to
看了下这几个东西的报价。
个人版要几k。专业版要几十k。

太贵了。

秦风意动(Kimm King)

unread,
Jan 8, 2008, 1:11:02 AM1/8/08
to
可以转换图片
可以不存到本地

直接输出到response

tyrbl

unread,
Jan 8, 2008, 2:27:00 AM1/8/08
to
AspPdf 相对便宜一点。

请问怎样显示在ie 上或者弹出一个下载的界面也可以的!

“秦风意动(Kimm King)”编写:

tyrbl

unread,
Jan 8, 2008, 5:48:03 AM1/8/08
to
不好意思,还要麻烦您!
现在我可以将实现直接打开或者下载的功能。但是在真正的项目中产生的pdf不是页面的内容,而是:
System has got an error message.
System error encountered. Please contact your System Administrator.

我看了AspPDF 的manual http://www.asppdf.com/manual_13.html 和例子。
可能是我英语太差,还是没有发现解决的办法。
我想知道ImportFromUrl()对页面的要求。
是不是ImportFromUrl 不能转换含有用户控件的页面?

“秦风意动(Kimm King)”编写:

秦风意动(Kimm King)

unread,
Jan 8, 2008, 6:00:00 AM1/8/08
to
把你的项目发给我
或者是弄一个模拟的大概程序发给我

tyrbl

unread,
Jan 8, 2008, 7:36:01 AM1/8/08
to
谢谢!但是我没办法模拟,我自己的例子都能成功实现。
也没办法发给你,我们的项目是7层架构的,太大了,这个页面有很多的userControl
还有两部分是动态生成的。里面调用了很多我们公司自己封装的function.

十分感谢您的热心帮助。
我的msn 是:hl...@hotmail.com

十分愿意交您这样不计得失的热心朋友!

“秦风意动(Kimm King)”编写:

秦风意动(Kimm King)

unread,
Jan 8, 2008, 12:27:01 PM1/8/08
to
不客气,也没有帮你什么忙
有机会 我们联机下,

我想远程看看你的情况,

个人觉得问题可能不再asppdf组件。
而在运行时的某个细节上出了问题。

tyrbl

unread,
Jan 8, 2008, 8:11:00 PM1/8/08
to

我发现问题了,原来是ImportFromUrl()会触发page_load事件,在page_load 事件中发生了异常。但是我设置了一个全局变量
s="Y",在ImportFromUrl()前让s="N",但是在page_load 中s还是为“Y”

Dim objPdf As IPdfManager = New PdfManager

PDFFlage = "Y"


Dim objDoc As IPdfDocument = objPdf.CreateDocument(Missing.Value)

objDoc.ImportFromUrl("http://localhost/TESTPDF/TEST.ASPX",

Missing.Value, Missing.Value, Missing.Value)
'Dim strFileName = objDoc.Save(Server.MapPath("printOut.pdf"),
False)

'labCheckPdf.Text = "Success! Download your PDF file <A HREF=" +
strFileName + ">here</A>"
objDoc.SaveHttp("attachment;filename=hello.pdf", Missing.Value)

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Try
If Me.IsPostBack = False Then ‘ 虽然不是第一次但是IsPostBack =“FALSE”
If PDFFlage = "N" Then
'PDFFlage 还是为"N",这里面的代码会继续执行
END IF

END IF

“秦风意动(Kimm King)”编写:

秦风意动(Kimm King)

unread,
Jan 8, 2008, 8:42:01 PM1/8/08
to
IsPostBack是回传,跟第几次调用无关
开关变量最好用boolean类型

tyrbl

unread,
Jan 8, 2008, 9:03:03 PM1/8/08
to
调用ASPPDF
的ImportFromUrl()时,它会触发页面的page_load()事件,在页面的page_load事件中本来可以正常使用的session,却不能使用,导致了转换出来的的页面没有加载数据。

“秦风意动(Kimm King)”编写:

秦风意动(Kimm King)

unread,
Jan 8, 2008, 10:17:02 PM1/8/08
to
不能用session
因为每次都是新的链接

tyrbl

unread,
Jan 10, 2008, 12:38:00 AM1/10/08
to
经过同事的帮助终于可以使用session了,就是传一个生成好的html文件给ImportFromUrl(),但是html文件显示出来的样式和转换成的pdf样式不一样,后来我发现

ImportFromUrl 接受的第二个参数里可以设置页面宽度,我传了"PageWidth=630px",
但是报错。请问怎样设置转成后的pdf宽度,因为html 里的内容有一部没有在pdf中显示出来

谢谢!
“秦风意动(Kimm King)”编写:

tyrbl

unread,
Jan 11, 2008, 7:28:02 AM1/11/08
to
非常感谢“秦风意动(Kimm King“终于搞定了

“秦风意动(Kimm King)”编写:

秦风意动(Kimm King)

unread,
Jan 14, 2008, 6:13:05 AM1/14/08
to
:)
很高兴看到你的成功

有什么问题 我们共同学习 共同进步

0 new messages