2013-10-17 72 views
0

下面的渲染方法導出一個rdlc到pdf用於我的應用程序。但是在導出後 - 保存的「Output.pdf」文件無法打開說「Output.pdf無法打開。 「不支持的文件或文件已損壞」。雖然保存的文件默認在Adobe Reader中打開。導出的PDF不能被讀取

   Warning[] warnings; 
       string[] streamIds; 
       string mimeType = "application/pdf"; 
       string encoding=String.Empty; 
       string filenameExtension=String.Empty; 
       string deviceInfo ="<DeviceInfo>"+"<OutputFormat>PDF</OutputFormat>"+" <PageWidth>8.5in</PageWidth>"+"<PageHeight>11in</PageHeight>"+"<MarginTop>0.5in</MarginTop>" +"<MarginLeft>1in</MarginLeft>"+"<MarginRight>1in</MarginRight>"+"<MarginBottom>0.5in</MarginBottom>"+"</DeviceInfo>"; 
       DataSet myDataSet = new DataSet(); 

byte[] bytes = viewer.Render("PDF", deviceInfo, out mimeType, out encoding, out filenameExtension, out streamIds, out warnings); 
         using (System.IO.FileStream fs = new System.IO.FileStream("output.pdf", System.IO.FileMode.Create)) 
         { 
          fs.Write(bytes, 0, bytes.Length); 
         } 

         FileStream fsi = new FileStream(@"D:\output.pdf", FileMode.Create); 

爲什麼文件無法打開? render()方法參數的任何更改?

+1

此代碼看起來沒問題,但查看器是什麼?什麼版本?有許多不同的'Render(...)'方法,它們的參數和順序稍有不同。你還可以在'warngings'數組中獲得任何東西嗎? –

+0

否;我注意到output.pdf被保存了,並且可以在project/bin目錄下正確打開。但是在D:\它說文件已損壞。 – flute

回答

0

這裏的問題是
FileStream fsi = new FileStream(@"D:\output.pdf", FileMode.Create); 它只是創建與d名ouput.pdf文件:\在it..So沒有數據並使用Acrobat Reader說文件currupted!