2012-02-28 1 views
4

페이지 내용을 PDF로 인쇄 할 수있는 기능을 내 웹 사이트에 갖고 싶습니다. 나는 이것을 위해 몇 가지 옵션을 시도했지만, 다국어 문자를 처리 할 때 wkhtmltopdf가 가장 적합했습니다.wkhtmltopdf.exe 클라우드 웹 서버의 System.Security.SecurityException입니다. 어떻게하면 서버 보안 정책을 무시할 수 있습니까?

는 내 로컬 서버에서 작업을 가지고 있지만, 나는 그것이 나에게 다음과 같은 오류

Security Exception 
Description: The application attempted to perform an operation not allowed by the security policy. To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file. 

Exception Details: System.Security.SecurityException: Request failed. 

을주고있다 지금 호스팅 클라우드 웹 서버에 업로드 할 때 나는 Web.config의

년에 보안 정책을 변경
<securityPolicy> 
    <trustLevel name="Full" policyFile="internal"/> 
</securityPolicy> 

하지만 여전히

테스트 URL을 작동하지 않는 경우가 http://www.noor.com.asp1-20.dfw1-2.websitetestlink.com/ArticleDetails.aspx?Language=en-US&PageID=19&ArticleID=4

입니다

이 다운로드 링크의 뒷면에있는 다운로드 링크를 클릭하면 웹 페이지의 특정 섹션을 PDF로 변환 할 수 있습니다. 로컬 서버에서는 정상적으로 작동하지만 웹 서버에서는 보안상의 이유로 작동하지 않습니다. 나는 PDF를 작동시키기 위해 며칠 동안을 보았으며 이제는 웹 서버에서 작동하지 않습니다. 나는 다른 옵션을 시도했지만 어떤 이유로 인해 iText는 아랍어를 변환하지 않고 페이지의 아랍 버전에만 정크 문자를 인쇄하고있었습니다.

올바른 것으로 바꾸려면 어떻게해야하는지 알려주십시오.

나는 PDF

string url = "PrintArticle.aspx?articleID=" + Request["articleID"] + "&download=yes&Language=" + Request["Language"]; 

// string args = string.Format("\"{0}\" - ", url); 
string args = string.Format("\"{0}\" - ", "http://www.domain.com.asp1-20.dfw1-2.websitetestlink.com/" + url); 
var startInfo = new ProcessStartInfo(Server.MapPath("bin\\wkhtmltopdf.exe"), args) 
{ 
     UseShellExecute = false, 
     CreateNoWindow = true, 
     RedirectStandardOutput = true 

}; 
var proc = new Process { StartInfo = startInfo }; 
proc.Start(); 

string output = proc.StandardOutput.ReadToEnd(); 
byte[] buffer = proc.StandardOutput.CurrentEncoding.GetBytes(output); 
proc.WaitForExit(); 
proc.Close(); 
Response.ContentType = "application/pdf"; 
Response.AddHeader("Content-Disposition", "attachment;filename=download.pdf"); 
Response.BinaryWrite(buffer); 
Response.End(); 

답변

3

에게 일하기 CODE 생성하는 데 사용할 C#을에게

코드를 사용하여 asp.net 4.0을 사용하여이 웹 사이트 개발 : 나는에서 PrintArticle.aspx를 호출하여 문제 해결을 MainPage.aspx, 사용자가 cl 거리면 lnkbtn 다운로드 링크 단추 PrinteArticle.aspx (인쇄 기사 페이지는 기사 제목, 날짜를 보여주는 간단한 페이지입니다. 및 제 설명)과 코드에 HTML을 통과하는 아래 다음 PDF 파일로 인쇄됩니다 내가은 articleID, 다운로드, 언어 등과 같은 쿼리 문자열과 같은 다른 매개 변수를 전달하고

protected void lnkbtnDownload_Click(object sender, EventArgs e) 
    { 
     string url = "PrintArticle.aspx?articleID=" + Request["articleID"] + "&download=yes&Language=" + Request["Language"]; 

     string args = string.Format("\"{0}\" - ", "http://xyz.net/" + url); 
     var startInfo = new ProcessStartInfo(Server.MapPath("bin\\wkhtmltopdf.exe"), args) 
     { 
      UseShellExecute = false, 
      CreateNoWindow = true, 
      RedirectStandardOutput = true 

     }; 
     var proc = new Process { StartInfo = startInfo }; 
     proc.Start(); 

     string output = proc.StandardOutput.ReadToEnd(); 
     byte[] buffer = proc.StandardOutput.CurrentEncoding.GetBytes(output); 
     proc.WaitForExit(); 
     proc.Close(); 
     Response.ContentType = "application/pdf"; 
     Response.AddHeader("Content-Disposition", "attachment;filename=download.pdf"); 
     Response.BinaryWrite(buffer); 
     Response.End(); 
    } 

..