2013-06-28 41 views
0

PDF文件这是我的代码来创建PDF文件,iTextSharp的库:无法创建与iTextSharp的

public void ExportToPdf(DataTable dt) 
     { 
      Document document = new Document(); 
      PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("c:\\sample.pdf", FileMode.Create)); 
      document.Open(); 
      iTextSharp.text.Font font5 = iTextSharp.text.FontFactory.GetFont(FontFactory.HELVETICA, 5); 

      PdfPTable table = new PdfPTable(dt.Columns.Count); 
      PdfPRow row = null; 
      float[] widths = new float[] { 4f, 4f, 4f, 4f }; 

      table.SetWidths(widths); 

      table.WidthPercentage = 100; 
      int iCol = 0; 
      string colname = ""; 
      PdfPCell cell = new PdfPCell(new Phrase("Products")); 

      cell.Colspan = dt.Columns.Count; 

      foreach (DataColumn c in dt.Columns) 
      { 

       table.AddCell(new Phrase(c.ColumnName, font5)); 
      } 

      foreach (DataRow r in dt.Rows) 
      { 
       if (dt.Rows.Count > 0) 
       { 
        table.AddCell(new Phrase(r[0].ToString(), font5)); 
        table.AddCell(new Phrase(r[1].ToString(), font5)); 
        table.AddCell(new Phrase(r[2].ToString(), font5)); 
        table.AddCell(new Phrase(r[3].ToString(), font5)); 
       } 
      } document.Add(table); 
      document.Close(); 
     } 

这条线:PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("c:\\sample.pdf", FileMode.Create));是给我这个错误Access to the path 'c:\sample.pdf' is denied. - 我需要已经创建的文件或东西在这里失踪?

+1

可你的根手动创建一个文件c:驱动器?拒绝访问? – James

回答

2

尝试改变的FileAccess

新的FileStream( “C:\ sample.pdf”,FileMode.Create,FileAccess.ReadWrite)

2

这不是一个iTextSharp问题。这是一个普通的I/O问题。尝试使用路径C:\\sample.pdf创建任何其他文件时,您会遇到同样的问题。可能的原因是:您不允许直接写入C:驱动器,或者文件sample.pdf已经存在并且不能被覆盖(其权限不允许它,或者因为它在PDF查看器中打开而被锁定) )。

你已经知道这一点因为这是错误消息说什么:

访问路径“C:\ sample.pdf”被拒绝。

使用不同的路径。用测试文件污染C:驱动器不是一个好习惯。

+0

%AppData%是这个问题的一个很好的选择。还要确保配置文件SERVICES具有完整的访问权限。这个错误也可以从这个问题衍生出来。 –