0

我正在使用以下代码将 HTML 内容保存为 PDF:

public void SaveHTMLToPdf(string HTML, string FilePath)
{
    Document document = new Document(PageSize.A4, 10f, 10f, 100f, 0f);

    PdfWriter.GetInstance(document, new FileStream(Request.PhysicalApplicationPath + "\\Invoice_Statement.pdf", FileMode.Create));
    document.Open();
    iTextSharp.text.Image pdfImage = iTextSharp.text.Image.GetInstance(Server.MapPath(ImgCom.ImageUrl.ToString()));

    pdfImage.ScaleToFit(150, 100);

    pdfImage.Alignment = iTextSharp.text.Image.UNDERLYING; pdfImage.SetAbsolutePosition(40, 770);

    document.AddTitle("Invoice Details");
    document.Add(pdfImage);

    iTextSharp.text.html.simpleparser.StyleSheet styles = new iTextSharp.text.html.simpleparser.StyleSheet();
    iTextSharp.text.html.simpleparser.HTMLWorker hw = new iTextSharp.text.html.simpleparser.HTMLWorker(document);

    styles.LoadTagStyle("th", "color", "red");
    styles.LoadTagStyle("th", "frontsize", "5");

    document.Add(new Header(iTextSharp.text.html.Markup.HTML_ATTR_STYLESHEET, "Style.css"));

    hw.Parse(new StringReader(HTML));

    document.Close();
}

但它给出了这个错误:

该进程无法访问文件“C:\inetpub\wwwroot\abc\Invoice_Statement.pdf”,因为它正被另一个进程使用。

在这一行:

PdfWriter.GetInstance(document, new FileStream(Request.PhysicalApplicationPath + 
                      "\\Invoice_Statement.pdf", FileMode.Create));

它只发生在使用 IIS-7 的服务器上,并且在本地使用 Visual Studio 时可以正常工作。

任何人都可以帮助..??

4

1 回答 1

0

可能是因为您无权将文件写入该位置。请记住,当您使用 Visual Studio 在本地运行时,IIS 正在您当前登录的安全上下文中运行,并且您可能拥有读取/写入文件位置所需的权限。部署到服务器后,服务器通常会在网络服务帐户或本地系统帐户的安全上下文下运行 IIS。您想验证您的目录是否已授予这两个帐户的读/写权限。

于 2013-05-08T11:26:58.417 回答