我使用以下代码将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的本地工作正常。
任何人都可以帮忙.. ??
答案 0 :(得分:0)
可能,这是因为您没有权限将文件写入该位置。请记住,当您使用Visual Studio在本地运行时,IIS将在您当前登录的安全上下文中运行,并且您可能具有读取/写入文件位置所需的权限。部署到服务器后,服务器通常在网络服务帐户或本地系统帐户的安全上下文下运行IIS。您想验证您的目录是否已授予对这两个帐户的读/写权限。