8

我想使用 WinForms (C#) 在指定目的地打开一个 PDF 文件。这是我的代码:

System.Diagnostics.Process myProcess = new System.Diagnostics.Process();
myProcess.StartInfo.FileName = "Acrobat.exe";
myProcess.StartInfo.Arguments = "/A \"nameddest=Test2=OpenActions\" C:\\example.pdf";
myProcess.Start();

它总是在第 1 页打开文件,即使在第 10 页有目标 Test2。它基本上忽略了目标参数。但是,如果我使用像页码这样的另一个参数,它就可以正常工作。例如:

myProcess.StartInfo.Arguments = "/A \"page=5=OpenActions\" C:\\example.pdf";

将始终在第 5 页打开 PDF 文档。

在此先感谢您的帮助

4

5 回答 5

8

我使用以下代码:

string strNamedDestination  = "MyNamedDestination"; // Must be defined in PDF file.
string strFilePath = "MyFilePath.pdf";
string strParams = " /n /A \"pagemode=bookmarks&nameddest=" + strNamedDestination + "\" \"" + strFilePath + "\"";
Process.Start("AcroRd32.exe", strParams);

注意参数中的“/n”。它使 Adob​​e 始终打开一个新文档。否则,如果文档已经打开,它不会将其移动到正确的命名目的地。这取决于您希望应用程序的行为。

于 2012-05-17T15:27:41.537 回答
3

关于从命令外壳打开 PDF 文档时的 Adob​​e 文档,您可以使用以下语法使用 /A 开关将参数传递给打开命令:

myProcess.StartInfo.Arguments = "/A \"nameddest=Test2=OpenActions\" C:\\example.pdf";

如果我省略 OpenActions 参数,一切正常,例如:

myProcess.StartInfo.Arguments = "/A \"nameddest=Test2\" C:\\example.pdf";

我不确定为什么 OpenActions 会中断打开文件,但忽略它可以正常工作。

于 2009-09-15T19:05:42.157 回答
2

我有一个 5 列的 csv。Column1 包含 PDF 名称和 Column5 页码。可执行文件显示 csv。当我双击 csv 中的一行时,将执行以下代码:

ListViewItem item = lvwItems.SelectedItems[0];
Process myProcess = new Process();
myProcess.StartInfo.FileName = "Acrobat.exe";
myProcess.StartInfo.Arguments = "/A page=" + item.SubItems[4].Text + " " + item.Text;
myProcess.Start();

这将打开名称在item.Text页码所在页面上的选定 PDFitem.SubItems[4].Text

于 2011-02-23T09:12:01.137 回答
0

Have you set up the destinations? You need to be have the standard or professional versions of Adobe Acrobat in order to do this:

http://kb2.adobe.com/cps/317/317300.html

于 2009-09-14T21:13:26.907 回答
0

Adobe Reader 有一些关于打开指定目的地的错误。查看http://xenon.arcticus.com/open-pdf-named-destination-dde-cc了解一些信息和解决方法。

于 2010-03-17T15:45:51.190 回答