在我的项目中,我想打开一个特定的pdf页面。我从stackoverflow找到了一个代码很好的代码
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);
}
然而,当我想从sql获取startInfo.Arguments's
数据时,这段代码在c#中完美运行它只会打开我用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页的按钮,然后我想从Windows打开pdf,它也从第15页打开。它就像我在使用它之后无法处理参数。
所有人都知道这个问题,或者可以看出我错在哪里?
答案 0 :(得分: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"