2009-09-14 12 views
7

Chciałbym otworzyć plik PDF o nazwie miejsce docelowe przy użyciu WinForm (C#). Tu jest mój kodu:Otwórz plik pdf programowo pod wskazanym miejscem docelowym

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(); 

To zawsze otwiera plik na stronie 1, nawet mającego cel test2 na stronie # 10. To w zasadzie ignoruje parametr docelowy. Jednak jeśli użyję innego parametru, na przykład numeru strony, to działa dobrze. Na przykład:

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

zawsze otworzyć dokument PDF na stronie 5.

Dzięki z góry za pomoc

+0

Czy to działa, jeśli wykonasz polecenie z wiersza poleceń? Czy wypróbowałeś inne wersje programu Acrobat lub innych systemów? Może to być błąd programu Acrobat, a może twoja instalacja jest zła? – Jason

+0

Próbowałem wykonać go z wiersza poleceń i nie działa. Jeśli przekażę numer strony, to działa, ale nie używa miejsc docelowych. Zainstalowałem nawet nową wersję programu Acrobat na nowym komputerze i nie odniosłem żadnego sukcesu. –

+0

Jeśli nie działa z linii poleceń, to nie jest to nawet pytanie związane z programowaniem. To pytanie dotyczy Adobe Reader. To naprawdę nie jest miejsce na tego rodzaju pytanie - spytaj na http://forums.adobe.com/community/adobe_reader_forums/adobe_reader –

Odpowiedz

0

Czy skonfigurować miejsca docelowe? Trzeba być mają standardowe lub profesjonalne wersje Adobe Acrobat w tym celu:

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

+0

Tak, używam Adobe Acrobat 8 ​​Standard Version 1.8.3. Wewnątrz Adobe wszystkie miejsca wydaje się w porządku. Kliknięcie dowolnego z nich spowoduje poruszanie się po dokumencie. –

2

Odnośnie dokumentacji Adobe podczas otwierania dokumentu PDF z powłoki poleceń można przekazać parametry do otwartej polecenie za pomocą przełącznika/a, używając następującej składni:

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

Jeśli pominąć OpenActions parametr wszystko działa dobrze jak:

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

Nie jestem pewien, dlaczego OpenActions łamie otwierania pliku, ale z pominięciem działa dobrze.

2

Mam csv z 5 kolumn. Kolumna 1 zawiera nazwy plików PDF i numery kolumn5. Plik wykonywalny wyświetla csv. Kiedy dwukrotnie na linii w csv następujący kod jest wykonywany:

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(); 

Otwiera wybrany plik PDF, którego nazwa jest w item.Text na stronie, na której numer strony jest w item.SubItems[4].Text

6

używam następujący kod :

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

Uwaga "/ n" wewnątrz parametrów. To sprawia, że ​​Adobe zawsze otwiera nowy dokument. W przeciwnym razie, jeśli dokument był już otwarty, nie przesuwa go do odpowiedniego nazwanego miejsca docelowego. To zależy od zachowania, które chcesz dla swojej aplikacji.

Powiązane problemy