2012-12-19 5 views
0

.NET 웹 사이트와 (EssentialObjects PDF 라이브러리를 사용하여) 탐색 할 때 생성 된 PDF를 반환하는 페이지가 있습니다.Server.Execute 호출에서 ZIP 파일 만들기

루프에서 Server.Execute를 여러 번 호출하고 PDF 페이지의 URL을 실행할 수있는 다른 페이지를 갖고 싶습니다. 반환 된 응답을 사용하여 메모리에 PDF를 만들고 DotNetZip을 사용하여 여러 개의 PDF가 포함 된이 최종 zip 파일을 사용자에게 반환하십시오.

어떻게 이렇게 가겠어요?

답변

1

이 작업을 수행하려는 사람은이 코드를 사용하여 종료했습니다. 이렇게하면 많은 수의 페이지를 가져 와서 PDF로 변환하고 단일 zip 파일로 압축 할 수 있습니다.

Dictionary<string, byte[]> pdfByteList = new Dictionary<string, byte[]>(); 
string pageName = "TestPage"; 
string htmlToConvert = GetHTML(pageName); //Perform the Server.Execute() code here and return the HTML 

PdfConverter converter = new PdfConverter(); 
byte[] pdfBytes = converter.GetPdfBytesFromHtmlString(htmlToConvert); 
pdfByteList.Add(pageName, pdfBytes); 

using (ZipFile zip = new ZipFile()) 
{ 
    int i = 0; 
    foreach(KeyValuePair<string,byte[]> kvp in pdfByteList) 
    { 
     zip.AddEntry(kvp.Key, kvp.Value); 
     i++; 
    } 

    Response.Clear(); 
    Response.BufferOutput = true; // false = stream immediately 
    Response.ContentType = "application/zip"; 
    Response.AddHeader("content-disposition", "attachment; filename=TheZipFile.zip"); 
    zip.Save(Response.OutputStream); 
}