2016-02-15 72 views
1

在我的項目中,我想打開一個特定的pdf頁面。我發現從計算器代碼偉大的工程這裏是代碼c#打開一個特定的pdf頁面,從sql中獲取數據

private void button1_Click(object sender, EventArgs e) 
{ 
    startInfo.FileName = @"C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe"; 
    startInfo.Arguments = "/A \"page=3\" \"C:\\Users\\test.pdf"; 
    Process.Start(startInfo); 
} 

然而這段代碼是在C#中正常使用時,我想從SQL startInfo.Arguments's數據只打開我與button1_Click打開最後一頁。

這是我試圖用sql獲取數據的方式;

SqlCommand sqlCmd = new SqlCommand("Select * From table ", baglanti); 
baglanti.Open(); 
SqlDataReader reader = sqlCmd.ExecuteReader(); 
try 
{ 
    while (reader.Read()) 
    { 
     if (reader[1].ToString() == "pdf") 
     { 
      startInfo.FileName = @reader[4].ToString(); 
      startInfo.Arguments = reader[3].ToString(); 
      Process.Start(startInfo); 
     }   
    } 

    baglanti.Close(); 
    reader.Close(); 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message.ToString()); 
} 

的另一件事是在我打開特定的PDF頁面像15頁有按鈕,然後我想從窗戶打開PDF通常也從第15頁。它是這樣開我使用後我不能處置的說法它。

那麼,有誰知道這個問題的任何事情,或可以看到我錯了?

+0

您的閱讀器在調試時的輸出是什麼?設置一個斷點並逐步執行代碼並查看你得到的輸出。 – Roman

+0

reader [4]是C:\ Program Files(x86)\ Foxit Software \ Foxit Reader \ FoxitReader.exe reader [3]是「/ A \」page = 1 \「\」C:\\ Users \\ dzcgkv \\ Desktop \\ Kiosk \\ EOP-HPV_006_DHPV_HİDROLİK_MONTAJ.pdf「 但它仍然會打開第3頁原因button1_click –

+0

如果您將sql代碼移至按鈕單擊事件,它會在第3頁或最後一頁打開?請注意,你在參數結尾缺少'\「'。你的字符串看起來像'\「C:\\用戶....... MONTAJ.pdf。在'.pdf'之後,你缺少'\」'。 Like'.pdf \「' – Roman

回答

0

當我在測試應用程序中使用它時,您的代碼正常工作。我現在從您的評論中注意到,您在/A之間的參數中有一個空格。刪除它並確保您的PDF路徑正確(數據庫行中沒有雙重轉義序列或類似的東西)。因此,您的輸出應該如下,以使其正確運行:

reader[1]: "pdf" 
reader[3]: "/A \"page=1\" \"C:\\Users\\dzcgkv\\Desktop\\Kiosk\\EOP-HPV_006_DHPV_HİDROLİK_MONTAJ.pdf\"" 
reader[4]: "C:\\Program Files (x86)\\Foxit Software\\Foxit Reader\\FoxitReader.exe"