2011-06-09 88 views
-1

我創建一個PDF文件,並通過郵件發送,現在我把更多的時間,我得到這個錯誤PDF問題關閉選項C#的winform

過程.....因爲它被另一個beingused過程

 Document doc = new Document(iTextSharp.text.PageSize.LETTER, 10, 10, 42, 35); 

try 

{ 

    PdfWriter wri = PdfWriter.GetInstance(doc, new FileStream("c:\\Test11.pdf",FileMode.Create)); 

    doc.Open; 

     Paragraph paragraph = new Paragraph("This is my first line using Paragraph."); 

    Phrase pharse = new Phrase("This is my second line using Pharse."); 

    Chunk chunk = new Chunk(" This is my third line using Chunk."); 
    doc.Add(paragraph); 

    doc.Add(pharse); 
    doc.Add(chunk); 

} 

catch (DocumentException dex) 

{ 

} 

finally 

{ 
    doc.Close(); 
} 
+2

你能粘貼你的代碼嗎?你是如何製作pdf文件的? – mqpasta 2011-06-09 09:32:41

+0

與itextSharp DLL我的問題是我如何關閉此文件? – mnaftal 2011-06-09 09:36:40

回答

0

您只能使用一個應用程序的物理PDF文件在同一時間。

將它添加爲附件併發送它可能會使文件保持打開一段時間。在對它做任何事情之前複製文件,並簡單地「發送」或「顯示」副本。

File.Copy原來的PDF文件,並抄報

File.Copy原來的PDF文件,並顯示該副本

這可以防止「文件中警告」

+0

我該怎麼做?請 – mnaftal 2011-06-09 10:03:04

+0

我仍然無法再次發送File.Copy(Application.StartupPath.ToString()+「\\ hh.pdf」,「fff.pdf」,true); Attachment attachFile = new Attachment(Application.StartupPath.ToString()+「\\ fff.pdf」); – mnaftal 2011-06-09 10:30:22

+0

每次都要複製到一個新文件HH1.pdf hh2.pdf hh3.pdf應該這樣做。也許你需要使用wri.Close()或wri.Dispose()函數關閉編寫器。 – CodingBarfield 2011-06-09 10:54:02

2

你確保Document類關閉在其中打開的下面的流? 看起來不是。並作爲附件發送,首先完成將pdf文件寫入磁盤。關閉它,然後使用FileMode.Open和FileShare.Read參數來讀取併發送它。這樣,多個文件可以讀取併發送它,甚至可以在線程中發送它。

+0

封閉,現在我可以閱讀和加入,如果可能的話請舉個例子嗎? – mnaftal 2011-06-09 10:47:31

+0

新的FileStream(「File」,FileMode.Open,FileShare.Read「); api應該可以滿足您的需求,可以使用文件流類進行播放,查找它的示例。 – Zenwalker 2011-06-13 04:28:09