private void ExportContent(string exportType)
{
string pageSource = PageSourceHiddenField.Value;
pageSource = "<html>" + pageSource.Replace("#g#", ">").Replace("#l#", "<") + "</html>";
pageSource = pageSource.Replace("<div class=" + "\"exportButton\"" + ">", "<div class=" + "\"exportButton\"" + "style=" + "\"display: none\"" + ">");
// To make the relative image paths work, base URL must be included in head section
pageSource = pageSource.Replace("</head>", string.Format("<base href='{0}'></base></head>", BaseURL));
// Check for license and apply if exists
string licenseFile = Server.MapPath("~/App_Data/Aspose.Words.lic");
if (File.Exists(licenseFile))
{
License license = new License();
license.SetLicense(licenseFile);
}
MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(pageSource));
Document doc = new Document(stream);
string fileName = GetOutputFileName("." + exportType);
if (doc.PageCount > 1)
{
Directory.CreateDirectory(Server.MapPath("~/App_Data/" + "Zip"));
if (exportType.Equals("Jpeg") || exportType.Equals("Png"))
{
fileName = GetOutputFileName(exportType).Replace(exportType, "");
// Convert the html , get page count and save PNG's in Images folder
for (int i = 0; i < doc.PageCount; i++)
{
if (exportType.Equals("Jpeg"))
{
ImageSaveOptions saveOptions = new ImageSaveOptions(SaveFormat.Jpeg);
saveOptions.PageIndex = i;
doc.Save(Server.MapPath("~/App_Data/Zip/") + fileName + "/" + (i + 1).ToString() + "." + exportType, saveOptions);
}
else
{
ImageSaveOptions saveOptions = new ImageSaveOptions(SaveFormat.Png);
saveOptions.PageIndex = i;
doc.Save(Server.MapPath("~/App_Data/Zip/") + fileName + "/" + (i + 1).ToString() + "." + exportType, saveOptions);
}
}
string filepath = Server.MapPath("~/App_Data/Zip/" + fileName + "/");
string downloadDirectory = Server.MapPath("~/App_Data/");
ZipFile.CreateFromDirectory(filepath, downloadDirectory + fileName + ".zip", CompressionLevel.Optimal, false);
Directory.Delete(Server.MapPath("~/App_Data/Zip/" + fileName), true);
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.ClearContent();
response.Clear();
response.ContentType = "App_Data/" + exportType;
response.AddHeader("Content-Disposition", "attachment; filename=" + fileName + ".zip;");
response.TransmitFile("~/App_Data/" + fileName + ".zip");
//File.Delete(Server.MapPath("~/App_Data/" + fileName + ".zip"));
response.End();
return;
}
}
doc.Save(Response, fileName, ContentDisposition.Attachment, null);
Response.End();
}