2014-09-30 5 views
0

지난 며칠 동안 검색 중이며 찾고있는 것을 찾을 수 없으므로 잘만 보았습니다.div/image/object 내부의 ReportViewer

저는 급여 정보를 검색하기 위해 함께 사용하고있는 ASP.NET (4.0) 사이트가 있습니다. 현재 저는 reportviewer를 사용하고 있지만 크로스 브라우저 지원으로 인해 100 % 작동하지 않습니다. 이미 RV를 PDF로 자동 변환하여 바이트로 변환하도록 설정했습니다. 내가 A)) 독립 문서 B로 PDF를 열고 새 창에서 PDF를 열려면 코드를

내가 달성하고자하는 것은 열려 사업부 내에서 동일한 페이지 내에서 PDF/table/image/other object ... 그리고 그게 내가 왜곡 된 곳입니다. 현재 가지고있는 VB 코드는 다음과 같습니다.

 Dim bytes As Byte() 

     Dim warnings As Warning() 
     Dim streamIds As String() 
     Dim mimeType As String = Nothing 
     Dim encoding As String = Nothing 
     Dim extension As String = Nothing 
     Dim filename As String = "PayDetail" 

     bytes = rvPayroll.LocalReport.Render("PDF", Nothing, mimeType, encoding, extension, streamIds, warnings) 

     ' ***** AUTOMATICALLY ASK THE USER TO SAVE/OPEN PDF 
     'Response.Buffer = True 
     'Response.Clear() 
     'Response.ContentType = mimeType 
     'Response.AddHeader("content-disposition", "inline; filename=" & filename & "." & extension) 
     'Response.BinaryWrite(bytes) 
     'Response.Flush() 

     ' ***** OPEN PDF AS NEW WEB PAGE 
     'Response.BufferOutput = True 
     'Response.ClearContent() 
     'Response.ClearHeaders() 
     'Response.ContentType = mimeType 
     'Response.AddHeader("Content-Length", bytes.Length.ToString) 
     'Response.AddHeader("content-disposition", "inline;filename=PayDetail.pdf") 
     'Response.ContentType = "applicatin/pdf" 
     'Response.BinaryWrite(bytes) 
     'Response.Flush() 
     'Response.Clear() 

PDF를 이미지로 표시하고 표시하려고했지만 이미지 상자에 아무것도 표시하지 않았습니다. 사용하려고 시도 :

 Dim base64String As String = Convert.ToBase64String(bytes, 0, bytes.Length) 

     Image1.ImageUrl = "data:image/png;base64," & base64String 

     Image1.Visible = True 
+0

에서 적응. 그건 좋은 생각이 아니다. 대신 PDF를 생성하고 응답을 Generic Handler (.ashx) 파일에 작성하는 코드를 작성해야합니다. 그런 다음 URL을 가리 키도록 웹 페이지에 [PDF 포함] (http://stackoverflow.com/questions/291813/recommended-way-to-embed-pdf-in-html)을 게시합니다. ashx 파일. – mason

+0

저는 웹 페이지 구축에 익숙하지 않습니다 ... 페이지에서 직접 코드를 실행하는 것이 왜 나쁜지에 대해 나에게 알려주십시오 ... 확실히 조사하고 Generic 핸들러에 대해 배우기 시작할 것입니다 ... – Joe

+0

PDF는 HTML과 다른 문서입니다. HTML을 생성하는 코드와 동일한 코드가 PDF를 처리하는 경우 PDF를 페이지로 가져 오는 방법은 무엇입니까? – mason

답변

0

먼저 GeneratePDF.ashx라는 Generic Handler을 만듭니다. 참고 아래 코드는 작성하지 않았고 VB.NET 프로그래머가 아니므로 작동하지 않을 수도 있습니다.

'generate bytes, perhaps based on Request.QueryString parameters 
`write bytes to output 
Response.Buffer = True 
Response.Clear() 
Response.ContentType = "application/pdf" 
Response.AddHeader("content-disposition", "inline; filename=" & filename & "." & extension) 
Response.BinaryWrite(bytes) 
Response.Flush() 

그런 다음 우리의 페이지에서, 우리는을 통해 PDF를 생성하는 데 필요한 매개 변수를 우리의 일반적인 핸들러를 가리키는 URL을 제공하는 확인하고, 그리고 전달하여 PDF를 포함하기 위해 아래 링크에서 techiques 중 하나를 사용 쿼리 문자열. 코드 위

<embed src="GeneratePDF.ashx?parameter1=asdf&parameter2=qwer" width="500" height="375" type="application/pdf" /> 

난 그냥 당신이 페이지에 직접 코드를 실행하고 있으리라 믿고있어 Recommended way to embed PDF in HTML?

+0

나는 네가 가리키고있는 곳을 찾은 것 같아. 나머지 길을 찾으려고 노력하고있어. ashx 매개 변수는 특히 A) 목록 상자와 B) 세션 변수에서 동적입니다. 그럼 처리를 위해 2를 ashx로 넘겨 줘야하나요? – Joe

+0

@Joe 쿼리 문자열 매개 변수 (예 :'? parameter1 = asdf & parameter2 = qwer')를 포함하려면'embed' 요소의'src' 속성을 조작하십시오. 이것은 JavaScript에서 클라이언트 측에서 수행되어야합니다. 그러나 만약 당신이 어떻게'runat = "server"를'embed' 엘리먼트에 추가 한 다음 각 포스트 백 시점에 서버 측에서 조작함으로써 서버에서 할 수 있는지 알지 못한다면. – mason

+0

지금까지 도움을 주셔서 감사합니다, 나는 단지 과거의 장애물을 가지고 있다고 생각합니다. 렌더링. 필자는 ashx를 호출 할 것입니다. 데이터가 꺼져 있고 바이트가 PDF에서 생성된다는 것을 알지만 PDF가 삽입 내에 표시되지 않습니다. 모든 컨텐츠 유형은 application/pdf로 설정됩니다. – Joe