2

リテラルにhtmlデータがあり、scan.pdfを使用してそのhtmlからiTextsharppdfファイルを作成します。しかし、File.Delete()メソッドを使用して作成したpdfファイルを削除しようとすると、次のようなエラーが表示されます

D:\Hosting\filepath\scan.pdf' 別のプロセスで使用されているため

どうすれば解決できますか?

これは、html から pdf ファイルを作成し、添付ファイルとしていくつかの mailid に送信するためのコードです。

   string MailFormat = searchDt.Rows[0][1].ToString();
            EmalBody.Append(MailFormat);
            EmalBody.Replace("[Date]", DateTime.Today.ToString());
            string emailbody = EmalBody.ToString();
            message.Body = EmalBody.ToString();
            ***HTMLToPdf(emailbody, "scan.pdf");***
            System.Net.Mail.Attachment attachment;
            attachment = new System.Net.Mail.Attachment(Server.MapPath("scan.pdf"));
            message.Attachments.Add(attachment);
            message.IsBodyHtml = true;
            message.Subject = "";
            smtpClient.Send(message);
            File.Delete("D://filepath//scan.pdf");

   public void HTMLToPdf(string HTML, string FilePath)
   {
   Document document = new Document();
   PdfWriter.GetInstance(document, new FileStream("D:\\filepath\\scan.pdf",FileMode.Create));
    document.Open();

    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);
    hw.Parse(new StringReader(HTML));
    document.Close();
    }
4

4 に答える 4

1

実際、メールの添付オブジェクトを解放するのを忘れていたため、エラーが発生しました。このコードを入力attachment.Dispose();すると、エラーは解消されました。

于 2013-04-05T11:16:35.660 に答える
0

この Textsharp ライブラリを使用したことはありませんが、using ブロックでファイルを作成するだけでこれを解決できると思います。

using(PdfWriter MyWriter=PdfWriter.GetInstance(Document,Stream))
{
...
}

または単に .dispose() を呼び出すだけです:

MyWriter.Dispose()

コードを表示できれば、問題の正確な場所をデバッグするのに役立ちます。

于 2013-04-05T09:58:17.983 に答える