以编程方式在指定目标位置打开pdf文件

时间:2009-09-14 21:05:03

标签: c# winforms pdf acrobat

我想使用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文档。

提前感谢您的帮助

5 个答案:

答案 0 :(得分:6)

我使用以下代码:

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

答案 1 :(得分:2)

关于从命令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打破了打开文件但省略它的工作正常。

答案 2 :(得分: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();

这将打开所选PDF,其名称位于页面编号为item.Text

的页面上的item.SubItems[4].Text

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

Adob​​e Reader在打开指定目的地方面存在一些错误。请查看http://xenon.arcticus.com/open-pdf-named-destination-dde-c-c以获取一些信息和解决方法。