저는 SharePoint 2013 사이트에서 일하고 있으며 PDF로 페이지를 저장할 수있는 기능을 추가했습니다. PDF 변환은 타사 라이브러리 인 SelectPdf에 의해 처리됩니다. 페이지에있는 "PDF 다운로드"버튼이 한 번만 작동한다는 것을 제외하고는 모든 것을 작동 (렌더링 및 파일 다운로드) 할 수있었습니다. 즉, 버튼을 클릭 한 횟수에 관계없이 코드 숨김의 클릭 이벤트가 한 번만 발생합니다 (10 초 이상 간격으로 클릭한다는 사실을 알 수 있음). PDF 파일을 다시 다운로드하려면 페이지를 새로 고쳐야합니다. 는 내가 "안녕하세요 세계가"예 (아래 참조) 문제를 파악하기 위해 함께 넣어 : 나는 그것을합니다 (ThreadAbortException이를 던져) 문제를 발생 Response.End()
라고 생각 초에ASP.NET "application/pdf": 한 번만 실행되는 코드
protected void lnkPdfDownload_Click(object sender, EventArgs e)
{
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=test.pdf");
/************************************ Create PDF File ************************************/
string html = @"<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Strict//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"">
<html dir=""ltr"" lang=""en-US"">
<body><h1>Hello World</h1></body>
</html>";
HtmlToPdf converter = new HtmlToPdf();
PdfDocument doc = converter.ConvertHtmlString(html);
byte[] bytes = doc.Save();
Response.OutputStream.Write(bytes, 0, bytes.Length); // ALTERNATIVE: doc.Save(Response.OutputStream);
/************************************ Create PDF File ************************************/
//Response.End(); // This throw a ThreadAbortException, therefore I'm using the alternative code below
Response.Flush();
Response.SuppressContent = true;
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
을,하지만 난 대체 다른 코드와 함께 그리고 나는 여전히 같은 문제가있다. (예외는 이제 던져지지 않는다.)
SelectPdf 라이브러리에 문제가 있다고 생각하지 않습니다. 전체 블록 ("Create PDF File"주석 사이에 있음)을 주석 처리 할 수 있으며 동일한 작업 (분명히 PDF가 생성되지 않음)을 얻을 수 있습니다.
나는 "다운로드"버튼을 최대 2 회까지 성공적으로 클릭 할 수 있음을 알아 냈습니다 (드물지만 일관성이 없습니다). 세 번째는 아무 일도 일어나지 않습니다.
이것은 큰 문제는 아니지만, 내가보기에는 잘못되었다고 생각합니다. 이유는 다음과 같습니다. "다운로드"버튼을 클릭하고 내 PDF 파일을 가져온 후 SharePoint 페이지에서 편집 모드를 시작할 수 없습니다. "로드 중"메시지는 계속 회전하지만 아무 것도 발생하지 않습니다 (페이지를 새로 고침하지 않는 한 다시).
누구에게이 문제가 있습니까? 나는 온라인으로 보았지만 그것에 관해 아무것도 찾을 수 없었다. Internet Explorer 11과 Chrome 51을 사용하고 있습니다. 자세한 정보가 필요하면 알려주십시오. 고맙습니다.
모든 예외 (IE)를 중단 할 수있는 옵션이 활성화되었지만 throw되는 JavaScript 오류가 표시되지 않습니다. 모든 응답 코드를 제거하면 이벤트가 항상 발생하는 것으로 나타났습니다. – Frederic