2016-08-17 10 views
0

Asposeを使用してBMPをPDFにレンダリングしてダウンロードする必要があります。ASP.NET Aspose PDF with embedded 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の新しいドキュメントオブジェクトモデルを使用してみてくださいすることをお勧めいたしますので、あなたは、レガシーAspose.Pdf.generatorのアプローチを使用していることが表示されます名前空間。次のコードスニペットを使用してみてください。

// 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社で開発者の伝道師です。