c#打开特定的pdf页面,从sql获取数据
在我的项目中,我想打开一个特定的pdf页面。我从stackoverflow中找到了一个代码,这个代码非常有用c#打开特定的pdf页面,从sql获取数据,c#,sql,pdf,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\" \
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的
数据时,这段代码在c中工作得非常好,它只打开了我用按钮1\u单击
打开的最后一页
这就是我试图用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页打开。这就好像我用了它之后就无法处理这个争论
那么,有人知道这个问题吗?或者有人能看出我错在哪里吗?当我在测试应用程序中使用它时,您的代码工作正常。我现在从您的评论中注意到,在
/
和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"
当我在测试应用程序中使用您的代码时,它运行良好。我现在从您的评论中注意到,在
/
和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"
调试读卡器时,读卡器的输出是什么?设置一个断点,一步一步地遍历代码,看看你得到了什么输出。reader[4]是C:\ProgramFiles(x86)\Foxit Software\Foxit reader\FoxitReader.exe reader[3]是“/a\”page=1\“\”C:\\Users\\dzcgkv\\Desktop\\Kiosk\\EOP-HPV\u 006\u DHPV\u H\304; DROL\304; K\MONTAJ.pdf“但是它仍然会打开第3页,原因是button1\u click如果您将sql代码移动到button click事件,它会在第3页还是在最后一页打开?”?请注意,您的参数末尾缺少
\“
。您的字符串看起来像\”C:\\Users...MONTAJ.pdf
。在.pdf
之后,您缺少了\”
。就像.pdf\“
一样。阅读器[3]是/A\'page=1\“\'C:\\Users\\dzcgkv\\Desktop\\Kiosk\\EOP-HPV\u 006İDHPVİDROLİKİKİMONTAJ.pdf\”这是正确的。我在表格中添加了last\我自己,否则程序无法找到文档。这是button_1Click的参数和我从sql获取的参数数据之间的唯一区别。请确保sql表中的条目没有转义序列。如果您向表中添加一个条目,例如\“page=2\”
,它将自动向表中再添加两个反斜杠。所以它应该是\\“page=2\\”
。我刚刚用您的代码创建了一个测试应用程序,并为数据库添加了一些值。它工作得很好。确保您的行输入正确(请与MSSQL Management Studio或任何其他DB应用程序进行检查)。或者只需使用消息框
检查结果。例如MessageBox.Show(reader[3].ToString()
。调试读取器时,读取器的输出是什么?设置一个断点并逐步遍历代码,查看您得到的输出。读取器[4]是C:\Program Files(x86)\Foxit Software\Foxit reader\FoxitReader.exe读取器[3]是“/a\”页面=1\”C:\\Users\\dzcgkv\\Desktop\\Kiosk\\EOP-HPV_006_DHPVİDROLİKİKİMONTAJ.pdf“但它仍然会打开第3页按钮1的原因如果将sql代码移动到按钮单击事件,它会在第3页或最后一页打开?请注意,您的参数末尾缺少\”
。您的字符串看起来像\“C:\\Users…….MONTAJ.pdf
.After.pdf
您缺少了\”
.Like.pdf\”
.reader[3]是/A\'page=1\“\\C:\\Users\\dzcgkv\\Desktop\\Kiosk\\EOP-HPV\u DHPV\H\304; DROL\K\MONTAJ.pdf\”这是正确的。我在我的表格中添加了最后一个\我自己,否则程序找不到文档。这是button\u 1Click的参数和我从sql中获取的参数之间的唯一区别。确保sql表格中的条目没有转义序列。如果向表格中添加条目,例如\“page=2\”
它将自动向其添加两个反斜杠。因此它将是\\\“page=2\\”
。我刚刚用您的代码创建了一个测试应用程序,并向数据库添加了一些值。它工作正常。确保您的行条目正确(请与MSSQL Management Studio或任何其他数据库应用程序一起检查)。或者只需使用MessageBox
检查结果。例如MessageBox.Show(reader[3].ToString()
)。