2016-02-15 4 views
1

В моем проекте я хочу открыть конкретную страницу в формате pdf. Я нашел код из StackOverflow, который прекрасно работает здесь код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#, когда я хочу, чтобы получить startInfo.Arguments's данные из SQL это только открывает последнюю страницу, которую я открыл с 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

читатель [4] - это C: \ Program Files (x86) \ Foxit Software \ Foxit Reader \ FoxitReader.exe читатель [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: \\ Users ....... MONTAJ.pdf'. После' .pdf' вам не хватает '\''. Например, '.pdf \" '. – Roman

ответ

0

Ваш код отлично работает, когда я использую его в тестовом приложении. Теперь я заметил, что у вас есть пробел в аргументах между / и A. Удалите его и убедитесь, что ваш путь к PDF-адресу верен (в строке базы данных нет каких-либо двойных escape-последовательностей или чего-то подобного). Таким образом, ваш выход должен быть следующим, чтобы заставить его работать должным образом:

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" 
Смежные вопросы