Ouvrir un fichier pdf par programme à une destination nommée

Je voudrais ouvrir un fichier PDF à la destination nommée à l’aide de WinForms (C #). Voici mon code:

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

Il ouvre toujours le fichier à la page 1 même avec la destination Test2 à la page 10. Il ignore fondamentalement le paramètre de destination. Cependant, si j’utilise un autre paramètre comme le numéro de page, cela fonctionne bien. Par exemple:

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

ouvrira toujours le document PDF à la page 5.

Merci d’avance pour votre aide

J’utilise le code suivant:

 ssortingng strNamedDestination = "MyNamedDestination"; // Must be defined in PDF file. ssortingng strFilePath = "MyFilePath.pdf"; ssortingng strParams = " /n /A \"pagemode=bookmarks&nameddest=" + strNamedDestination + "\" \"" + strFilePath + "\""; Process.Start("AcroRd32.exe", strParams); 

Notez le “/ n” dans les parameters. Cela oblige Adobe à toujours ouvrir un nouveau document. Sinon, si le document était déjà ouvert, il ne sera pas déplacé vers la destination nommée de droite. Cela dépend du comportement que vous souhaitez pour votre application.

En ce qui concerne la documentation Adobe lors de l’ouverture d’un document PDF à partir d’un interpréteur de commande, vous pouvez transmettre les parameters à la commande open à l’aide du commutateur / A à l’aide de la syntaxe suivante:

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

Si j’omets le paramètre OpenActions, tout fonctionne correctement, par exemple:

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

Je ne suis pas sûr de savoir pourquoi OpenActions coupe l’ouverture du fichier, mais le fait de l’omettre fonctionne bien.

J’ai un CSV avec 5 colonnes. Column1 contient les noms PDF et les numéros de colonne Column5. L’exécutable affiche le csv. Lorsque je double-clique sur une ligne du csv, le code suivant est exécuté:

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

Ceci ouvre le fichier PDF sélectionné dont le nom se trouve dans item.Text sur la page dont le numéro de page est dans item.SubItems[4].Text

Avez-vous configuré les destinations? Pour ce faire, vous devez disposer des versions standard ou professionnelle d’Adobe Acrobat:

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

Adobe Reader a quelques bugs concernant l’ouverture à des destinations nommées. Jetez un coup d’œil à http://xenon.arcticus.com/open-pdf-named-destination-dde-cc pour des informations et des solutions de contournement.