0

这是我使用 iTextSharp 库创建 PDF 文件的代码:

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.- 我需要已经创建文件还是这里缺少什么?

4

2 回答 2

2

尝试更改FileAccess

新 FileStream("c:\sample.pdf", FileMode.Create, FileAccess.ReadWrite)

于 2013-06-29T13:34:58.347 回答
2

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

您已经知道这一点,因为这正是错误消息所说的:

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

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

于 2013-06-29T08:08:49.727 回答