Откройте файл PDF программно в названном месте назначения - PullRequest
7 голосов
/ 15 сентября 2009

Я хотел бы открыть файл PDF в названном месте назначения, используя WinForms (C #). Вот мой код:

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";

всегда откроет документ PDF на странице 5.

Заранее спасибо за помощь

Ответы [ 5 ]

6 голосов
/ 17 мая 2012

Я использую следующий код:

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 всегда открывать новый документ.В противном случае, если документ уже был открыт, он не перемещается в нужное место назначения.Это зависит от поведения, которое вы хотите для своего приложения.

2 голосов
/ 23 февраля 2011

У меня есть CSV с 5 столбцами. Столбец 1 содержит имена PDF и номера столбцов 5. Исполняемый файл отображает 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

2 голосов
/ 15 сентября 2009

Что касается документации Adobe при открытии документа PDF из командной оболочки, вы можете передать параметры команде open с помощью переключателя / A, используя следующий синтаксис:

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

Если я опускаю параметр OpenActions, все работает нормально, как:

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

Я не уверен, почему OpenActions прерывает открытие файла, но если он пропущен, он работает нормально.

0 голосов
/ 17 марта 2010

В Adobe Reader есть несколько ошибок, связанных с открытием именованных мест назначения. Посмотрите на http://xenon.arcticus.com/open-pdf-named-destination-dde-c-c для некоторой информации и обходных путей.

0 голосов
/ 15 сентября 2009

Вы установили пункты назначения? Для этого вам необходимо иметь стандартную или профессиональную версии Adobe Acrobat:

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

...