以编程方式在命名目标位置打开pdf文件

我想使用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页的文件,即使目标Test2位于第10页。它基本上忽略了目标参数。 但是,如果我使用其他参数,如页码,它工作正常。 例如:

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

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

在此先感谢您的帮助

我使用以下代码:

 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”。 它使Adobe始终打开一个新文档。 否则,如果文档已经打开,则不会将其移动到正确的命名目标。 这取决于您的应用程序所需的行为。

关于从命令shell打开PDF文档时的Adobe文档,您可以使用/ A开关使用以下语法将参数传递给open命令:

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

如果我省略OpenActions参数,一切都很好,如:

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

我不确定为什么OpenActions打破了打开文件,但省略它工作正常。

我有一个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(); 

这将打开所选PDF,其名称位于item.Text页面上,pagenumber位于item.SubItems[4].Text

你有设置目的地吗? 您需要拥有Adobe Acrobat的标准版或专业版才能执行此操作:

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

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