首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >页面加载时打印pdf

页面加载时打印pdf
EN

Stack Overflow用户
提问于 2008-11-13 23:55:09
回答 5查看 972关注 0票数 0

我在我的aspx页面中有这段代码;

代码语言:javascript
复制
<a href="javascript:void(0);" onclick=<% Print(); %> title="Print listings">Print</a>

它提供了一个链接,用于在用户单击列表时将列表打印到pdf;正如您所注意到的,该脚本从后台代码调用一个函数。

问题是,当我写这段代码时,当我进入这个页面时,它会在加载时打印成pdf格式,我以为它会等待点击,但实际上它会执行打印。

有什么问题吗?提前谢谢。

警局。我使用的是VS2005,对于pdf创建,我使用的是iTextSharp。

EN

回答 5

Stack Overflow用户

发布于 2008-11-14 00:10:52

您希望使用HyperlinkControl并将OnClick事件处理程序连接到Print方法后面的代码。当用户单击该链接时,页面将回发,并引发OnClick事件。从那里你可以打印你的PDF。

在您的示例中,Print()函数是在页面加载时计算的。带有<% %>和<%= %>括号的任何内容都会在渲染时求值。

做你想做的事情的最好方法是在你的页面上有一个链接,它重定向到一个ASHX页面,然后将PDF直接输出到响应流中。应该有很多关于如何在这个地方(Google ashx)这样做的例子。链接将如下所示:

代码语言:javascript
复制
<a href="PrintMyPdf.ashx?PageID=<%= CurrentPageId %>">Print</a>

这将向ashx传递一个参数"PageID“,您可以从中确定要打印的页面。<%= %>语法计算表达式(在本例中是代码中的属性,但它可以是方法或形式),并将结果插入到页面的该部分。

因此,如果您的属性是:

代码语言:javascript
复制
protected int CurrentPageId { get { return 4; } }

它将在您的页面中写入以下内容:

代码语言:javascript
复制
<a href="PrintMyPdf.ashx?PageID=4">Print</a>

抢夺

票数 1
EN

Stack Overflow用户

发布于 2008-11-14 00:30:46

代码语言:javascript
复制
<a href="javascript:void(0);" onclick=<% Print(); %> title="Print listings">Print</a>

你不能这么做。我知道你在想什么,但这是不可能的,而且(对不起)太天真了。

写道:

问题是,当我写这段代码时,当我进入这个页面时,它会在加载时打印成pdf格式,我以为它会等待点击,但实际上它会执行打印。

这绝对是有道理的。您需要做的是将对()函数的调用放入不同的网页中,然后在您的onclick event中通过AJAX调用此网页。

票数 1
EN

Stack Overflow用户

发布于 2008-11-14 00:07:22

从您的代码片段中准确地判断发生了什么有点困难,但我假设您将pdf文件作为print()函数的一部分输出到响应流。这将在加载时显示pdf,因为后台代码是在呈现时(就在它将代码发送到浏览器之前)计算的,而不是在客户机上计算。

要获得您想要的行为,最好的方法是创建一个http处理程序文件(ashx),它将接受任何需要的参数作为url上的请求变量,然后将pdf输出到流。

然后,您只需使用正确的参数创建一个指向ashx文件的href即可显示文档。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/288814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档