2010-08-23 6 views
2

나는 ASP.NET 웹 사이트를 가지고 있으며 사용자가 선택하는 웹 페이지 집합의 출력을 포함하는 PDF 문서를 생성하는 데 필요한 웹 페이지 중 하나를 사용합니다. 나는 "배치 PDF"이라고 부릅니다. 기본적으로 사용자는 PDF에 넣어야하는 웹 페이지를 선택한 다음 선택한 모든 웹 페이지가 포함 된 PDF를 만드는 버튼을 클릭해야합니다.PDF 생성 디자인

이렇게하려면 쿼리 문자열을 통해 선택한 페이지 (ID)의 목록을 보내고 쿼리 문자열의 각 웹 페이지 ID에 대해 서버에서 로컬 호스트에 대한 http 요청을 생성하고 페이지를 가져옵니다 이 요청 (난 HTML에서 PDF로 변환 Request.Filter있다)에서 PDF. 그런 다음 모든 PDF 스트림을 단일 PDF로 결합하여 응답 스트림에 덤프합니다. 모든 것이 작동합니다.

하지만 AJAX를 사용하여 작업하고 싶습니다. 현재 새 브라우저 창이 열리고 사용자는 페이지를 볼 수 있기 전에 서버가 완료 될 때까지 기다려야합니다. 대신 AJAX 요청을 보내고 PDF 생성이 완료되면 PDF를 표시하고 싶습니다.

이렇게하는 한 가지 방법은 AJAX가 요청을 보내고이 파일로 리디렉션 할 때 서버의 파일에 PDF를 쓰는 것입니다. 그러나 파일을 망칠 수있는 방법이 있습니까? 예를 들어 전체 PDF를 세션에 넣을 수 있습니까? 다른 아이디어?

감사합니다.

답변

0

세션 대신 모든 것을 메모리 스트림에 넣는 것이 어떻습니까? 또한

[HttpGet] 
public ActionResult PreviewPDF() 
{ 
    // ... 
    // The PDF file stream. 
    MemoryStream pdf = PDF.Render(xmldata, xslfo); 
    return new FileStreamResult(pdf, "application/pdf"); 
} 

, 빠른 질문 : 같은, HTML 페이지의 콘텐츠를 확인 바이트 출력을 생성하고, 어떻게 당신은 PDF로 웹 페이지를 변환 않았다 어떻게 지구에를, 당신은 타사를 사용하는 수단?

+0

도움 주셔서 감사합니다. 나는 비슷한 것을했다. 페이지를 PDF로 변환하려면 ABCPdf라는 타사 도구를 사용하고 HTML을 사용하고 PDF를 내 보냅니다. 다음은 관련 토론입니다. http://stackoverflow.com/questions/564650/convert-html-to-pdf-in-net – akonsu