2013-03-04 115 views
1

我正在使用webbrowsercontrol來顯示本地存儲的.pdf。在按鈕按下時,我希望瀏覽器顯示空白頁面/無,並且我想將.pdf移動到不同的文件夾。首先我嘗試在移動之前導航到「」,但我的.pdf被另一個進程使用。谷歌告訴我,我可能需要清除瀏覽器的緩存才能移動它。我是這樣使用在這裏找到的代碼:http://www.gutgames.com/post/Clearing-the-Cache-of-a-WebBrowser-Control.aspx,我甚至嘗試了在註釋nr 2中找到的替代代碼行,但沒有一個讓我移動我的.pdf,它仍然被另一個進程使用。webbrowsercontrol問題,清除緩存不工作?

我能做些什麼來移動文件?我忘了什麼嗎?

在第二File.Move是我得到的錯誤:

webBrowser1.Navigate(""); 
WebBrowserHelper.ClearCache(); 
if (calConv != "") 
{ 
    File.Move(forsDir + calConv + ".cal", forsDir + calConv.Replace("ToDo\\", "") + ".cg4"); 
    File.Move(forsDir + calConv + ".pdf", forsDir + calConv.Replace("ToDo\\", "") + ".pdf"); 
} 
+0

如果你只顯示PDF,您可以使用Adobe的預覽控件,而不是webbrowsercontrol的。 – Vedran 2013-03-04 08:17:29

+0

你能否指點我正確的方向?我在哪裏可以找到這樣的閱讀和代碼示例?或者,我應該谷歌? – 2013-03-04 08:39:56

+0

@Vedran明白了,謝謝你的提示! – 2013-03-04 09:10:24

回答

0

這是如何顯示PDF而不使用三夏,使用Adobe閱讀器來代替:

從下載Acrobat的SDK http://www.adobe.com/devnet/acrobat/downloads.html

在你的項目的引用從SDK添加到兩個DLL - AxInterop.AcroPDFLib.dll和Interop.AcroPDFLib.dll

在您的窗體的構造函數中添加的Adobe預覽控制:

// Check if the user has Adobe Reader installed, if not you could show a link to Adobe Reader installer 
if (Type.GetTypeFromProgID("AcroPDF.PDF") == null) 
{ 
    pnlGetAdobe.Visible = pnlGetAdobe.Enabled = true; 
} 
else 
{ 
    try 
    { 
     // Initialize the Adobe control 
     axAcroPDF1 = new AxAcroPDF(); 
     axAcroPDF1.Dock = DockStyle.Fill; 
     axAcroPDF1.Enabled = true; 
     axAcroPDF1.Location = new Point(0, 25); 
     axAcroPDF1.Name = "axAcroPDF1"; 
     axAcroPDF1.OcxState = (AxHost.State)new ComponentResourceManager(typeof(JasperPdfReport)).GetObject("axAcroPDF1.OcxState"); 
     axAcroPDF1.Size = new Size(634, 393); 
     axAcroPDF1.TabIndex = 1; 
     pnlCenter.Controls.Add(axAcroPDF1); // Add it to a container or instead directly to your form with this.Controls.Add(axAcroPDF1) 
     axAcroPDF1.BringToFront(); 
    } 
    catch (COMException cex) 
    { 
     axAcroPDF1.Dispose(); 
     axAcroPDF1 = null; 
     MessageBox.Show(cex.ToString()); 
    } 
    catch (Exception ex) 
    { 
     axAcroPDF1.Dispose(); 
     axAcroPDF1 = null; 
     MessageBox.Show(ex.ToString()); 
    } 
} 

最後PDF文件加載到控制:

if (axAcroPDF1 != null && File.Exists(pdfFilename)) 
{ 
    axAcroPDF1.setShowToolbar(false); 
    axAcroPDF1.setView("FitH"); 
    axAcroPDF1.setLayoutMode("SinglePage"); 
    // Load the PDF into the control 
    axAcroPDF1.LoadFile(pdfFilename); 
    axAcroPDF1.src = pdfFilename; 

    // Show it 
    axAcroPDF1.Show(); 
    axAcroPDF1.Refresh(); 
} 
+0

我只是引用了Adobe的某些類型爲lib的東西,將其添加到工具欄中,並將其添加到我的表單中並使用:axAcroPDF1.LoadFile(file);用於將我的文件加載到查看器中。我似乎無法「卸載」該文件。怎麼做? – 2013-03-04 09:52:39

+0

您可以隨時執行axAcroPDF1.Dispose(),然後在要加載新PDF時重新初始化它。 – Vedran 2013-03-04 10:37:02

+0

我不喜歡它的外觀。使控制消失,並出現這樣的情況。我通過簡單地重新加載pdf文件在File.Move之前的路徑來解決它。這生成了一個空的PDF查看器窗口。 – 2013-03-04 11:00:17