我想使用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文档。
提前感谢您的帮助
答案 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的标准版或专业版才能执行此操作:
答案 4 :(得分:0)
Adobe Reader在打开指定目的地方面存在一些错误。请查看http://xenon.arcticus.com/open-pdf-named-destination-dde-c-c以获取一些信息和解决方法。