2008-11-13 22 views
0

У меня этот код на моей странице aspx;Печать pdf при загрузке страницы

<a href="javascript:void(0);" onclick=<% Print(); %> title="Print listings">Print</a> 

который представляет ссылку для распечатки объявлений в pdf, когда пользователь нажимает на нее; так как вы можете заметить, что скрипт вызывает функцию из предыдущего кода.

Проблема заключается в том, что когда я кодировал это, случается, что когда я иду на эту страницу, он печатает в формате pdf при загрузке, я думал, что он будет ждать щелчка, но вместо этого он выполняет печать.

В чем проблема? заранее спасибо.

PD. Я работаю с VS2005, и для создания pdf я использую iTextSharp.

ответ

0

Его немного сложно точно сказать, что происходит из фрагмента кода, но я бы предположил, что вы выводите файл pdf в поток ответов как часть функции print(). Это будет отображаться в формате pdf при загрузке, потому что код позади оценивается во время рендеринга (непосредственно перед отправкой кода в браузер) вместо того, чтобы оцениваться на клиенте.

Чтобы получить поведение, вы бы хотели, чтобы лучший способ - создать файл обработчика http (ashx), который примет любые необходимые аргументы в качестве переменных запроса на URL-адресе и затем выведет pdf-файл в поток.

Затем вы можете просто создать href для файла ashx с правильными аргументами для отправки документа.

1

Вы хотите использовать HyperlinkControl и подключить обработчик событий OnClick к вашему коду за методом Print. Когда пользователь затем нажимает на ссылку, страница будет отправляться обратно, и событие OnClick будет поднято. Оттуда вы можете распечатать свой PDF-файл.

В вашем примере функция Print() получает оценку при загрузке страницы. Все, что связано с <%%> и <% =%>, скобки оцениваются во время рендеринга.

Лучший способ сделать то, что вы хотите, - это ссылка на вашу страницу, которая перенаправляется на страницу ASHX, которая затем выводит PDF непосредственно в поток ответов. Там должно быть много примеров того, как это делается вокруг места (Google ashx). Ссылка будет выглядеть следующим образом:

<a href="PrintMyPdf.ashx?PageID=<%= CurrentPageId %>">Print</a> 

Это передаст параметр «PageId» в ASHx, из которого вы можете определить, какие страницы вы хотите напечатать. Синтаксис <% =%> оценивает выражение (в этом случае свойство в вашем коде позади, но оно может быть методом или forumla) и вставляет результат в эту часть страницы.

Так что, если вы собственность:

protected int CurrentPageId { get { return 4; } } 

Было бы написать следующее на страницу:

<a href="PrintMyPdf.ashx?PageID=4">Print</a> 

Роб

1
<a href="javascript:void(0);" onclick=<% Print(); %> title="Print listings">Print</a> 

Вы не можете это сделать. Я знаю, о чем вы думаете, но это невозможно и, скорее, (извините), наивно.

nmiranda писал:

Проблема заключается в том, что, когда я закодированы это случается, что, когда я иду данной страницы отпечатки PDF при загрузке, я подумал, что будет ждать за клик но вместо этого выполняет печать.

Это абсолютный смысл. Вам нужно сделать вызов функции Print() в другой веб-странице, а затем позвонить по этой веб-странице от AJAX в вашем onclick event.

0

Вам просто нужно иметь другую страницу, которая печатает документ PDF. Допустим, что страница printPDF.aspx

Вы просто должны изменить ссылку, чтобы быть

<a href="printPDF.aspx" title="Print listings">Print</a> 

Если вы должны передать ему параметры, то я бы действительно изменить ссылку, чтобы быть

<a href="javascript:void(0);" onlick="javascript:GoToPrint();" title="Print listings">Print</a> 

Сценарий:

<script> 
    function GoToPrint() 
    { 
     window.location = 'printPDF.aspx?var1=x&var2=y'; 
    } 
</script> 
0

Наконец я сделал это, я должен ясно, что в первую очередь я сделал все мои сообщения, используя другая веб-страница, в соответствии с полученными мной ответами, я понял, что мой apprroach для вызова отчета на одной странице с использованием href неверен.

Итак, я проанализировал предложение Роберта Вагнера, и я пробовал этот подход;

protected void btnPrint_Click(object sender, EventArgs e) 
{ 
    ... 
    string url = GetUrlWithParameters(); 

    string reportscript = "<script language='JavaScript'>" + 
     "window.open('" + url + "', 'CustomPopUp', " + 
     "'width=400, height=400, resizable=yes, scrollbars=yes')" + 
     "</script>"; 

    Page.RegisterStartupScript("reportscript", reportscript); 
    ... 

В GetUrlWithParameters() я построить и URL вызова в ASHx, где я произвожу свой доклад, ASHX получает различные параметры по некоторым вопросам, и она работала очень хорошо.

Выполняет скрипт и показывает pdf в других окнах точно так, как мне было нужно.

Thanx.

Смежные вопросы