c#打开一个特定的pdf页面,从sql获取数据

时间:2016-02-15 08:46:18

标签: c# sql pdf

在我的项目中,我想打开一个特定的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页打开。它就像我在使用它之后无法处理参数。

所有人都知道这个问题,或者可以看出我错在哪里?

1 个答案:

答案 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"