2009-09-14 5 views
7

Vorrei aprire un file PDF nella destinazione indicata utilizzando WinForms (C#). Qui è il mio codice:Aprire un file pdf a livello di codice in una destinazione denominata

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

Si apre sempre il file alla pagina 1, anche avendo la destinazione Test2 a pagina 10. # Si ignora sostanzialmente il parametro di destinazione. Tuttavia se uso un altro parametro come il numero di pagina funziona correttamente. Per esempio:

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

sarà sempre aprire il documento PDF a pagina 5.

Grazie in anticipo per il vostro aiuto

+0

Funziona se si esegue il comando dalla riga di comando? Hai provato altre versioni di Acrobat o di altri sistemi? Potrebbe trattarsi di un bug di Acrobat, o forse l'installazione è sbagliata? – Jason

+0

Ho provato ad eseguirlo dalla riga di comando e non ha funzionato. Se passo il parametro numero di pagina funziona ma non usa destinazioni. Ho persino installato una nuova versione di Acrobat su un nuovo computer e non ho avuto alcun successo. –

+0

Se non funziona dalla riga di comando, questa non è nemmeno una domanda relativa alla programmazione. È una domanda su Adobe Reader. Questo non è il posto giusto per questo tipo di domande: prova a chiedere su http://forums.adobe.com/community/adobe_reader_forums/adobe_reader –

risposta

0

Avete impostare le destinazioni? Hai bisogno di essere avere le versioni standard o professionali di Adobe Acrobat per fare questo:

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

+0

Sì, sto usando Adobe Acrobat 8 ​​Standard versione 1.8.3. Dentro Adobe tutte le destinazioni sembrano a posto. Cliccando su uno di essi navigherà attraverso il documento. –

2

Per quanto riguarda la documentazione di Adobe quando si apre un documento PDF da una shell dei comandi, è possibile passare i parametri all'aperto comando utilizzando l'opzione/A utilizzando la seguente sintassi:

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

Se Tralascio le OpenActions parametro tutto funziona come bene:

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

Non sono sicuro del motivo per cui OpenActions interrompe l'apertura del file, ma con l'omissione funziona bene.

2

Ho un CSV con 5 colonne. La colonna1 contiene i nomi PDF e il numero di pagina di colonna 5. L'eseguibile mostra il csv. Quando DoubleClick su una riga nel file CSV viene eseguito il seguente codice:

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

Ciò apre il file PDF selezionato il cui nome ha item.Text sulla pagina, che numero di pagina è in item.SubItems[4].Text

6

Io uso il seguente codice :

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

Nota "/ n" all'interno dei parametri. Rende Adobe ad aprire sempre un nuovo documento. Altrimenti, se il documento è già stato aperto, non lo sposta nella destinazione indicata. Dipende dal comportamento che vuoi per la tua applicazione.

Problemi correlati