Abra un archivo pdf programáticamente en un destino con nombre

Me gustaría abrir un archivo PDF en el destino designado con WinForms (C #). Aquí está mi código:

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

Siempre abre el archivo en la página 1, incluso teniendo el Test2 de destino en la página # 10. Básicamente ignora el parámetro de destino. Sin embargo, si uso otro parámetro como el número de página, funciona bien. Por ejemplo:

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

siempre abrirá el documento PDF en la página 5.

Gracias de antemano por tu ayuda

Yo uso el siguiente código:

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

Tenga en cuenta la “/ n” dentro de los parámetros. Hace que Adobe siempre abra un nuevo documento. De lo contrario, si el documento ya estaba abierto, no lo mueve al Destino con nombre correcto. Depende del comportamiento que quieras para tu aplicación.

Con respecto a la documentación de Adobe al abrir un documento PDF desde un shell de comandos, puede pasar los parámetros al comando abrir usando el modificador / A usando la siguiente syntax:

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

Si omito el parámetro OpenActions, todo funciona bien como:

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

No estoy seguro de por qué OpenActions se rompe al abrir el archivo, pero omitirlo funciona bien.

Tengo un csv con 5 columnas. Column1 contiene nombres de PDF y pagenumbers de Column5. El ejecutable muestra el csv. Cuando hago doble clic en una línea en el csv, se ejecuta el siguiente código:

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

Esto abre el PDF seleccionado cuyo nombre está en item.Text en la página cuyo número de página está en item.SubItems[4].Text

¿Has configurado los destinos? Necesitas tener las versiones estándar o profesional de Adobe Acrobat para hacer esto:

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

Adobe Reader tiene algunos errores con respecto a la apertura a destinos nombrados. Echa un vistazo a http://xenon.arcticus.com/open-pdf-named-destination-dde-cc para obtener información y soluciones.

    Intereting Posts