2013-03-04 1 views
1

Я использую webbrowsercontrol для отображения .pdf хранятся локально. При нажатии кнопки я хочу, чтобы веб-браузер отображал пустую страницу/ничего, и я хочу переместить .pdf в другую папку. Сначала я попытался перейти к «" перед перемещением, но мой .pdf был использован другим процессом. Google сказал мне, что мне, вероятно, необходимо очистить кеш браузера, чтобы он мог его переместить. Я сделал это, используя код, найденный здесь: 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 управления предварительным просмотром вместо управления webbrowser. – Vedran

+0

Не могли бы вы указать мне в правильном направлении? Где я могу найти примеры чтения и кода? Или что мне делать? –

+0

@Vedran Получил это, спасибо за подсказку! –

ответ

0

Это, как показывают PDF без использования WebControl, используя Adobe Reader вместо:

Скачать Acrobat SDK от http://www.adobe.com/devnet/acrobat/downloads.html

в вашем проекте добавить ссылку на двух библиотек DLL из SDK - AxInterop.AcroPDFLib.dll и Interop.AcroPDFLib.dll

В конструкторе вашей формы добавить элемент управления Previewer 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 (файл); для загрузки моего файла в программу просмотра. Однако я не могу «выгрузить» файл. Как это сделать? –

+0

Вы всегда можете сделать axAcroPDF1.Dispose(), а затем повторно инициализировать его, когда хотите загрузить новый PDF-файл. – Vedran

+0

Мне не понравился внешний вид. Имея контроль, исчезающий и появляющийся таким образом. Я решил это, просто перезагрузив путь, где файл pdf был _before_ File.Move. Это создало пустое окно просмотра PDF. –

 Смежные вопросы

  • Нет связанных вопросов^_^