2008-11-13 4 views
0

이 코드는 aspx 페이지에 있습니다.페이지로드시 PDF 인쇄

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

사용자가 클릭 할 때 PDF로 목록을 인쇄하는 링크를 제공합니다. 스크립트가 배후 코드에서 함수를 호출하는 것을 볼 수 있습니다.

문제는이 코드를 작성할 때이 페이지로 이동하면이 페이지로 이동하면 pdf로로드 될 때 클릭을 기다리는 대신 인쇄를 수행한다는 것입니다.

무엇이 문제입니까? 미리 감사드립니다.

PD. 나는 VS2005로 일하고 있는데, pdf를 만들려면 iTextSharp를 사용한다.

답변

0

코드 스 니펫에서 무슨 일이 일어나는지 정확히 말하기는 힘들지만, print() 함수의 일부로 pdf 파일을 응답 스트림으로 출력한다고 가정합니다. 코드 배후는 클라이언트에서 평가되는 것이 아니라 렌더링시 (브라우저에 코드를 보내기 바로 전에) 평가되므로로드시 pdf가 표시됩니다.

가장 좋은 방법은 URL에서 요청 변수로 필요한 모든 인수를 수락하고 pdf를 스트림으로 출력하는 http 핸들러 파일 (ashx)을 만드는 것입니다.

그러면 문서를 표시하기위한 올바른 인수를 사용하여 ashx 파일에 대한 href를 만들 수 있습니다.

1

하이퍼 링크 컨트롤을 사용하고 OnClick 이벤트 처리기를 Print 메서드 뒤의 코드에 연결하려고합니다. 그런 다음 사용자가 링크를 클릭하면 페이지가 다시 게시되고 OnClick 이벤트가 발생합니다. 거기에서 PDF를 인쇄 할 수 있습니다.

예제에서 페이지가로드 될 때 Print() 함수가 평가됩니다. < %%> 및 < % = %> 대괄호는 렌더링시 평가됩니다.

원하는 작업을 수행하는 가장 좋은 방법은 페이지에서 ASHX 페이지로 리디렉션되는 링크를 사용하여 PDF를 응답 스트림에 직접 출력하는 것입니다. 이 작업이 장소 (Google ashx)에서 어떻게 수행되는지에 대한 많은 예제가 있어야합니다. 링크는 다음과 같습니다.

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

매개 변수 "PageID"를 인쇄 할 페이지를 결정할 수있는 ashx로 전달합니다. < % = %> 구문은 표현식을 평가하고 (이 경우 코드 뒤에있는 속성이지만 메소드 또는 포럼이 될 수 있음) 페이지의 해당 부분에 결과를 삽입합니다.

그래서 속성 인 경우 :

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로이 페이지 그것을 인쇄를 갈 때, 나는 그것을 클릭을 기다리는 것이라고 생각하는 것이 일이다 대신 이 인쇄를 수행합니다.

이것은 절대적인 의미를 갖습니다. 당신이해야 할 일은 다른 웹 페이지로 웹 페이지로 전화를 걸어서 웹 페이지에 을 넣고 클릭하여으로 AJAX으로 전화하면됩니다.

0

PDF 문서를 인쇄하는 다른 페이지 만 있으면됩니다. 이제 당신이되고 그 다음 내가 링크를 변경 할 것이다 그것에 매개 변수를 전달해야하는 경우 이 당신은 당신의 링크를 변경해야

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

을로 해당 페이지가 printPDF.aspx

입니다 가정 해 봅시다

<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

마지막으로 내가 만든, 내가 사용하는 모든 내 보고서를 만들어 모두의 첫 번째 선택을 취소해야 다른 웹 페이지, 내가받은 반응에 따르면, href를 사용하여 동일한 페이지 내에서 보고서를 호출하는 데있어서의 approroach가 올바르지 않다는 것을 깨달았습니다.

따라서 Robert Wagner의 제안을 분석하여이 접근법을 시도했습니다. GetUrlWithParameters에서

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); 
    ... 

는() 나는 구성하고 내 보고서를 ASHX를 호출하는 URL은 ASHX는 몇 가지 문제에 따라 다른 매개 변수를 받고 매우 좋은 일했다.

스크립트를 실행하고 필요에 따라 다른 창에 pdf 파일을 표시합니다.

고맙습니다.