2009-09-14 21 views
7

Me gustaría abrir un archivo PDF en un destino con nombre usando WinForms (C#). Aquí está mi código:Abrir un archivo pdf programáticamente en un destino con nombre

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 se abre el archivo en la página 1 ni siquiera tener el destino Prueba2 en la página # 10. Básicamente se 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 habrá abrir el documento PDF en la página 5.

Gracias de antemano por su ayuda

+0

¿Funciona si ejecuta el comando desde la línea de comandos? ¿Has probado otras versiones de Acrobat u otros sistemas? Puede ser un error de Acrobat, o tal vez su instalación es mala? – Jason

+0

Intenté ejecutarlo desde la línea de comandos y no funcionó. Si paso el parámetro de número de página, funciona, pero no usa destinos. Incluso instalé una nueva versión de Acrobat en una nueva computadora y no tuve éxito. –

+0

Si no funciona desde la línea de comando, esta tampoco es una pregunta relacionada con la programación. Es una pregunta sobre Adobe Reader. Este no es realmente el lugar para ese tipo de pregunta, intente preguntar en http://forums.adobe.com/community/adobe_reader_forums/adobe_reader –

Respuesta

0

¿Ha establecido los destinos? Hay que ser tener las versiones estándar o profesional de Adobe Acrobat con el fin de hacer esto:

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

+0

Sí, estoy usando Adobe Acrobat 8 ​​Standard Version 1.8.3. Dentro de Adobe, todos los destinos parecen estar bien. Al hacer clic en cualquiera de ellos, navegará por el documento. –

2

En cuanto a la documentación de Adobe al abrir un documento PDF a partir de una consola de comandos, puede pasar los parámetros a la intemperie comandos con el modificador/A con la siguiente sintaxis:

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

Si Omito los AbrirAcciones parámetro todo funciona bien como:

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

No estoy seguro de por qué OpenActions rompe la apertura del archivo pero al omitirlo funciona bien.

2

Tengo un csv con 5 columnas. Columna1 contiene nombres de PDF y columnas de columna5. El ejecutable muestra el csv. Cuando DoubleClick 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 sigue item.Text en la página de la que pagenumber está en item.SubItems[4].Text

6

utilizo 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 params. Hace que Adobe abra siempre un documento nuevo. De lo contrario, si el documento ya estaba abierto, no lo mueve al Destino con nombre correcto. Depende del comportamiento que desee para su aplicación.

Cuestiones relacionadas