2009-09-04 1 views
0

을 사용하여 즉석에서 PDF 만들기 저는 웹 페이지가 있습니다. pdf 보고서를 생성하는 링크가 있습니다. 사용자가 링크를 클릭하면 PDF 생성 프로세스가 시작됩니다. 생성 된 PDF의 파일 크기가 사용자가 이렇게 &을 기다릴 수 없어 큰 (> 15MB)는 앞서 그의 다른 활동 이네 진행합니다 다음과 같은 동시 일들이 PDF 생성 프로세스가 줄지 계속 지금 AJAX & C#

  • 사용자가 검색을 계속

    1. 일어나는 것을 의미한다 아무런 충격도받지 않고
    2. pdf 생성이 완료되면 사용자는 다운로드 링크가 포함 된 이메일을 보내주십시오.

    이 기본적으로 구현

    1. 사용자가 generateReport을 나는 C#을 함수에 대한 호출을 AJAX를 사용하여 보고서 버튼을
    2. 을 생성 말을 클릭하는 것입니다()

    문제

    1. 이렇게하면 사용자가 수행 할 수 없습니다. 그는 다른 링크를하지만 때문에 여전히

    을 구현하기 AJAX 호출의 응답이로 클릭 할 수 있습니다 completes.Ofcourse 전체 프로세스 전까지 &하지 않는 것을 어떻게 맡는다는 점 순이다 달성 않는다 (프레임 워크 2.0) 개발 C#을 사용하여 aspx 웹 페이지를 만듭니다. 나는 일반적인 ASP.NET 웹 응용 프로그램에서 다시 게시를 없애기 위해 javadript & AJAX (AjaxPro)를 사용합니다.

  • +0

    여기에 데이터베이스가 있습니까? 생성 된 PDF를 저장하는 장소가 필요합니다. – jcollum

    +0

    아니요 .. 아니 databases.But 어떻게 dtabase 관련시킬 수 있습니까? – Janmejay

    답변

    2

    이와 같은 경우에는 PDF 생성 코드를 별도의 서비스로 분할하여 AJAX 코드가 PDF 작성을 시작할 수 있습니다. 서비스에서 PDF 파일을 만들면 서비스에서 사용자에게 관련 정보를 전자 메일로 보낼 수 있습니다.

    AJAX 코드는 remoting을 사용하여 서비스와 통신합니다.

    +0

    어떻게하면 별도의 서비스를 만들 수 있습니까? – Janmejay

    +0

    Windows 서비스 유형의 새 프로젝트를 만들어야합니다. 다음은 서비스와 함께 원격 사용에 대한 샘플입니다. http://www.codedblog.com/2007/09/01/calling-a-windows-service-from-aspnet-via-remoting-ipcchannel/ –

    1

    보고서를 작성하고 사용자에게 전자 메일로 보내는 개념은 좋은 방법입니다.

    구현은 클라이언트 측에서 매우 간단해야합니다. 즉, 보고서를 작성해야한다는 기본 호출입니다. 즉, 테이블 (보고서 대기열)에 저장하십시오.

    실제로 프런트 엔드의 호출에 의해 보고서가 실제로 생성되면 안됩니다. "보고서 대기열 (보고서 서비스)을 통해 실행되는 서비스 "PDF 파일을 생성하고 전자 메일을 보냅니다.

    추가 옵션으로, 이메일 전용 솔루션이 아닌 PDF가 파괴되지 않는다고 가정하면 클라이언트에서 ajax 팝업을 작성하여 사용자가 보고서 페이지로 이동하여 이미 생성 된 파일을 다운로드 할 수 있습니다.

    0

    타이머를 사용하여 isReportDone() 함수에 대한 AJAX 호출을 만들면 PDF의 저장소를 차례로 검사 할 수 있습니다. PDF를 생성하기 위해서는 정상적인 요청 - 응답 스레드에서 해당 작업을 전달해야한다고 생각합니다. 어느 것이 든 별도의 Thread (Multi-threading is fun)를 호출하여 처리하거나 서버의 별도 서비스에 데이터를 전달합니다.

    이들은 실제로 두 가지 아이디어가 있습니다. 실제로 강제로 다운로드해야하는 DB에서 파일을 생성하는 것과 비슷한 문제가있었습니다. 별도의 창에서 응답 스트림에 데이터를 쓴 별도의 페이지를 호출했습니다. 고객의 네트워크가 모든 팝업을 차단할 때까지 실제로 효과가있었습니다. 보고서를 생성 할 수 있도록

    0
    1. 사용자가 요청
    2. 페이지 GeneratePdf (인수)에 대한 비동기 서비스 호출을 개막 (버튼을 클릭).
    3. Pdf가 생성되는 동안 사용자가 일종의 회 전자를 본다.
    4. Pdf가 생성됩니다 (iTextSharp).
    5. Pdf는 어딘가에 저장됩니다. 데이터베이스 blob 필드가 이상적입니다. 그러면 웹 서비스가 새 파일의 id를 그냥 통과시킬 수 있습니다. 실패하면 파일 이름을 아약스 코드로 다시 전달하십시오.
    6. Webservice async (see this one) complete 이벤트가 발생하면 아약스 코드가 팝업을 던지거나 새 페이지로 리디렉션합니다. 어쩌면 당신은 스피너를 "Ready!" 링크.
    7. pdf 파일로의 링크는 사용자에게 전자 메일로 보냅니다.
    +0

    Drop 3 및 6. 0 부가가치. –