2011-08-26 1 views
0

PDF 파일을 WCF에서 Silverlight 클라이언트로 보내려고합니다. PDF는 DevExpress XtraReports ( XtraReport CreateReport (문자열 reportTypeName, RootGenericReportParameterContainer reportInformation))에 의해 생성됩니다.Silverlight 및 XtraReports - 브라우저의 새 탭에서 생성 된 PDF 보고서 열기

사실 PDF는 파일 저장 대화 상자에서 저장 경로를 선택한 후 클라이언트 컴퓨터의 어딘가에 저장됩니다. DevExpress는 모든 작업을 처리하지만 브라우저의 새 탭에서 PDF를 여는 방법을 알지 못합니다.

여기 또 다른 문제가 있습니다. Silverlight 4는 로컬 파일 시스템에 대한 액세스 권한이 없습니다. 따라서 로컬 PDF 위치에 대한 정보는 쓸모가 없습니다. 어쩌면 PDF를 WCF에 저장하고 클라이언트에 대한 링크를 보내는 것이 더 나을 것입니다. 그러나 어떻게?

답변

0

먼저 Silverlight 클라이언트로 파일을 보내야하는 이유가 무엇인지 궁금 할 것입니다. 이 요구 사항을 제거하면 솔루션이 훨씬 간단 해집니다. Silverlight는 새 브라우저 탭을 여는 링크를 제공 할 수 있습니다. 이 링크는 웹 도메인에서 처리하고 HttpHandler로 처리하여 브라우저 용 PDF 파일을 생성합니다. PDF url은 실제 파일을 참조 할 필요가 없으며, 요청에 따라 생성 할 수도 있고, 쿼리 문자열 값을 처리 할 수도 있습니다.이 작업을 수행하는 다양한 방법이 많이 있습니다.

+0

그렇다면 PDF 파일을 물리적 파일로 만들 필요가 없다고 할 수 있습니다. 하이퍼 링크로 충분합니다. 그렇다면 XRReports WCF 메서드에서 HttpHandler를 사용하여 클라이언트의 브라우저에서 보고서로 새 탭을 열도록하려면 어떻게해야합니까? – ilektrik

0

DevExpress 또는 Silverlight에 대한 질문이 아니라는 것을 알았습니다. 새 탭에서 [일종의 문서]를 열려고합니다. 각 브라우저는 기본적으로 다르게 처리하며 사용자는 탭 처리를 원하는대로 변경할 수 있습니다. 그리고 (사용자가 언급 한대로) 일단 사용자가 파일을 다운로드하면 더 이상 파일을 제어 할 수 없습니다.

웹 페이지의 앵커 태그에 "target = '_ blank'"를 사용하여 처리기/파일을 가리키는 링크가있는 것이 가장 좋습니다. 서버 측에서는 "Content-Disposition"헤더를 "Inline"으로 설정하여 문서를 다운로드하는 대신 첨부 파일로 표시해야한다는 것을 브라우저에 알릴 수 있습니다 ("첨부 파일").

관련 문제