I have a question.....I have both Aspose.Pdf and Aspose.Pdf.Kit installed. I am dynamically generating a PDF in my solution. I am storing data as HTML in a stringbuilder and then writing it to a MemoryStream. I then use the BindHTML method of the PDF object to bind the data from the MemoryStream and then the GetBuffer method to convert it to a byte array to render to the browser....It works fine but the problem I am having is for very large files, the largest being about 600 pages/1.7mb. It takes about 25 minutes to run and sometimes times out. I tried to use the PrintLargePDF method of Aspose.Pdf.Kit. When I pass it the MemoryStream I get a corrupt files or too many pages error. I am not working with files here just data temporarily stored in a MemoryStream. I will paste existing code below. PrintLargePDF section commented out in Report function Also...If I set IsBuffered to false, what would I use instead of GetBuffer? Does using the CompressionValue = maximum of 9 help? Thanks as this is new to m
int individualOrderId = Request.QueryString["individualOrderId"] == null?0:Convert.ToInt32(Request.QueryString["individualOrderId"]);
StringBuilder orderText = new StringBuilder("");
string pdfNm = string.Empty;
Aspose.Pdf.License license = new License();
license.SetLicense(AppDomain.CurrentDomain.BaseDirectory + @"\Aspose.Total.lic");
pdfNm = "batch_pdf";
string[] arrSSN = (string[])HttpContext.Current.Session["arrSSN"];
List<CTCS.Bol.IndividualOrder> list = IndividualOrderService.getBatchList(arrSSN);
for (int i = 0; i < list.Count; i++)
orderText.Append(list[i].OrderText);
orderText = orderText.Replace("
orderText = orderText.Replace("
MemoryStream objHTMLStream = new MemoryStream(ASCIIEncoding.UTF8.GetBytes(orderText.ToString()));
//Convert the memorystream to a PDF stored as a byte array.
byte[] theData = Report(objHTMLStream, this.Page);
//Clean up the memory stream
objHTMLStream.Flush();
objHTMLStream.Close();
// Clear all content output from the buffer stream
Response.Clear();
Response.Charset = "UTF-8";
// Set the HTTP MIME type of the output stream
Response.ContentType = "application/pdf";
// Add a HTTP header to the output stream that specifies the filename for appropriate browser
if (Request.Browser.Browser.ToString() == "IE")
Response.AppendHeader("content-disposition", string.Format("attachment; filename={0}.PDF", pdfNm));
else
Response.AppendHeader("content-disposition", string.Format("attachment; filename=\"{0}\".PDF", pdfNm));
//Add a HTTP header to output stream to let the browser know how much data is being transfered
Response.AddHeader("content-length", theData.Length.ToString());
//Write the data out to the client.
Response.BinaryWrite(theData);
Response.End();
}
private static byte[] Report(MemoryStream objStream, Page ObjPage)
{
Pdf pdf1 = null;
// Aspose.Pdf.Kit.PdfViewer viewer = new Aspose.Pdf.Kit.PdfViewer();
//viewer.AutoResize = true; //print the file with adjusted size
// viewer.AutoRotate = true; //print the file with adjusted rotation
// viewer.PrintPageDialog = true;//do not produce the page number dialog when printing
// viewer.PrintLargePdf(objStream);
// viewer.ClosePdfFile();
try
{
pdf1 = new Pdf();
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3;
pdf1.HtmlInfo.PageHeight = PageSize.A4Height;
pdf1.HtmlInfo.PageWidth = PageSize.A4Width;
pdf1.HtmlInfo.Margin.Top = 30;
pdf1.HtmlInfo.Margin.Bottom = 30;
pdf1.HtmlInfo.Margin.Left = 20;
pdf1.HtmlInfo.Margin.Right = 20;
pdf1.HtmlInfo.ImgUrl = "~/app_themes/Image/";
pdf1.IsAutoFontAdjusted = true;
pdf1.DefaultFontName = "Times New Roman";
pdf1.CompressionLevel = 9;
pdf1.Author = "DAMPSU_2008jb";
pdf1.Creator = "MKGCS-jb";
pdf1.BindHTML(objStream);
////added this section for custom page numbering on PDF ....
foreach (Section sec in pdf1.Sections)
{
HeaderFooter footer = new HeaderFooter(sec);
sec.OddFooter = footer;
sec.EvenFooter = footer;
Text txt = new Text("Page: $p/$P ");
txt.TextInfo.Alignment = AlignmentType.Center;
txt.TextInfo.FontName = "Times New Roman";
txt.TextInfo.FontSize = 10;
footer.Paragraphs.Add(txt);
}
}
catch (Exception e)
{
ObjPage.Response.Write("Report(): " + e.Message);
ObjPage.Response.End();
}
if (pdf1 != null)
//Return the PDF document as a byte array
return pdf1.GetBuffer();
return null;
}
}
}
Thanks for any assistance you can provide....
David