2016-08-17 3 views
0

Мне нужно отобразить BMP в PDF, используя Aspose и загрузить его.ASP.NET Загрузить Aspose PDF со встроенным BMP

Загруженный PDF поврежден, и Adobe его не откроет. Сохраненный файл PDF отлично и открывается. Кто-нибудь знает, почему PDF из загрузки поврежден?

enter image description here

protected void ASPxButton1_OnClick(object sender, EventArgs e) 
    { 

     WebsiteToImage websiteToImage = new WebsiteToImage(HttpContext.Current.Request.Url.AbsoluteUri, @"C:\Temp\Test.jpg"); 
     var generate = websiteToImage.Generate(); 
     // Create a MemoryStream object from image Byte array 
     MemoryStream ms = new MemoryStream(); 
     websiteToImage.Bitmap.Save(ms, ImageFormat.Jpeg); 

     // create a PDF object 
     Pdf pdf = new Pdf(); 
     // create a section and add it to pdf document 
     Aspose.Pdf.Generator.Section MainSection = pdf.Sections.Add(); 
     //Add the radio form field to the paragraphs collection of the section 
     // create an image object 
     Aspose.Pdf.Generator.Image sample_image = new Aspose.Pdf.Generator.Image(); 
     // specify the image file path information 
     //sample_image.ImageInfo.File = @"d:/pdftest/untitled.bmp"; 
     sample_image.ImageInfo.ImageStream = ms; 
     // specify the image file type 
     sample_image.ImageInfo.ImageFileType = Aspose.Pdf.Generator.ImageFileType.Bmp; 
     // specify the image width information equal to page width 
     sample_image.ImageInfo.FixWidth = MainSection.PageInfo.PageWidth - MainSection.PageInfo.Margin.Left - MainSection.PageInfo.Margin.Right; 
     // specify the image Height information equal to page Height 
     sample_image.ImageInfo.FixWidth = MainSection.PageInfo.PageHeight - MainSection.PageInfo.Margin.Top - MainSection.PageInfo.Margin.Bottom; 

     // create bitmap image object to load image information 
     Bitmap myimage = websiteToImage.Bitmap; 
     // check if the width of the image file is greater than Page width or not 
     if (myimage.Width > MainSection.PageInfo.PageWidth) 
      // if the Image width is greater than page width, then set the page orientation to Landscape 
      MainSection.IsLandscape = true; 
     else 
      // if the Image width is less than page width, then set the page orientation to Portrait 
      MainSection.IsLandscape = false; 

     // add image to paragraphs collection of section 
     MainSection.Paragraphs.Add(sample_image); 
     // save the resultant PDF 
     pdf.Save(@"C:\Temp\Test.pdf"); 
     pdf.Save(ms); 
     byte[] bytes = ms.GetBuffer(); 
     HttpContext.Current.Response.Clear(); 
     HttpContext.Current.Response.ContentType = "application/pdf"; 
     HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + Operator.Emplid + "Gudiance.pdf"); 
     HttpContext.Current.Response.BinaryWrite(bytes); 
     HttpContext.Current.Response.End(); 
     ms.Close(); 

ответ

0

Похоже, что вы используете устаревшую Aspose.Pdf.generator подход, поэтому для того, чтобы выполнить ваши требования, мы рекомендуем вам, пожалуйста, попробуйте использовать новый объект Document Модель Aspose.Pdf Пространство имен. Попробуйте использовать следующий фрагмент кода.

// create a PDF object 
Document pdf = new Document(); 
// create a section and add it to pdf document 
Aspose.Pdf.Page MainSection = pdf.Pages.Add(); 
//Add the radio form field to the paragraphs collection of the section 
// create an image object 
Aspose.Pdf.Image sample_image = new Aspose.Pdf.Image(); 
// specify the image file path information 
sample_image.File = @"C:\pdftest\OutOfMemoryDemo\OutOfMemoryDemo\Sample.bmp"; 
// specify the image width information equal to page width 
sample_image.FixWidth = MainSection.PageInfo.Width - MainSection.PageInfo.Margin.Left - MainSection.PageInfo.Margin.Right; 
// specify the image Height information equal to page Height 
sample_image.FixWidth = MainSection.PageInfo.Height - MainSection.PageInfo.Margin.Top - MainSection.PageInfo.Margin.Bottom; 

// create bitmap image object to load image information 
System.Drawing.Bitmap myimage = new System.Drawing.Bitmap(@"C:\pdftest\OutOfMemoryDemo\OutOfMemoryDemo\Sample.bmp"); 
// check if the width of the image file is greater than Page width or not 
if (myimage.Width > MainSection.PageInfo.Width) 
    // if the Image width is greater than page width, then set the page orientation to Landscape 
    MainSection.PageInfo.IsLandscape = true; 
else 
    // if the Image width is less than page width, then set the page orientation to Portrait 
    MainSection.PageInfo.IsLandscape = false; 

// add image to paragraphs collection of section 
MainSection.Paragraphs.Add(sample_image); 
MemoryStream stream = new MemoryStream(); 

// save the resultant PDF 
pdf.Save(stream); 

StreamReader reader = new System.IO.StreamReader(Request.InputStream); 
String Data = reader.ReadToEnd(); 
this.Title = Data; 
Response.Clear(); 
Response.ClearHeaders(); 
Response.ClearContent(); 
Response.Buffer = true; 
Response.Charset = "UTF-8"; 
Response.AddHeader("Accept-Header", stream.Length.ToString()); 
Response.AddHeader("Content-Length", stream.Length.ToString()); 
Response.AddHeader("Expires", "0″"); 
Response.AddHeader("Pragma", "cache"); 
Response.AddHeader("Cache-Control", "private"); 
Response.AddHeader("content-disposition", String.Format("inline;filename={0}", "article" + "docId"+ ".pdf")); 
Response.ContentType = "application/pdf"; 
Response.AddHeader("Accept-Ranges", "bytes"); 
Response.BinaryWrite(stream.ToArray()); 
Response.Flush(); 
Response.End(); 

PS Меня зовут Nayyer и я разработчик евангелист в Aspose.

Смежные вопросы