Blog Stats
  • Posts - 7
  • Articles - 0
  • Comments - 319
  • Trackbacks - 5

 

giovedì 4 agosto 2005

Apertura PDF su una determinata pagina

In questo post vediamo come poter aprire un PDF da un'applicazione e come poter aprire il file specificando la pagina desiderata.
Se si apre una command line e si prova ad aprire un file direttamente da qui alla pagina desiderata basterà scrivere:
C:\Programmi\Adobe\..\acrobat.exe /A page=2 C:\abc.pdf
Ovvero con l'opzione "/A" si specificano i parametri con cui aprire il pdf e di seguito si indica il path dello stesso file da aprire.
Per maggiori informazioni sui parametri da specificare basta guardare qui.

In questo caso però nella mia macchina è installato Adobe Acrobat, se invece è installato solamente l'Acrobat Reader allora da command line si dovrà scrivere:
C:\Programmi\Adobe\..\acrord32.exe /A page = 2 C:\abc.pdf

A questo punto dobbiamo fare lo stesso da codice!
Dobbiamo recuperare il path di Installazione di Adobe, prestando attenzione alla versione e a quale Adobe è stato installato.
(Codice VB.NET)

Dim buf As String = "C:\abc.pdf" 'Path del file PDF da aprire
Dim pathKey As
String
Dim key As RegistryKey

'Setto il percorso di Adobe nel Registro di Sistema
'Controllo prima la presenza di Acrobat Reader e in seguito quella di Adobe Acrobat standard.

pathKey = "Software\Adobe\Acrobat Reader\"
key = Registry.LocalMachine.OpenSubKey(pathKey)

If (key Is Nothing)
Then
 
pathKey = "Software\Adobe\Adobe Acrobat\"
  key = Registry.LocalMachine.OpenSubKey(pathKey)
End If

If (key Is Nothing) Then
 
'Non sono state trovate nè le chiavi di Acrobat Reader nè quelle di Adobe Acrobat
 
'Viene aperto il pdf sulla prima pagina!
 ApriFile(buf, Nothing
)
 
Return
End
If

'Per trovare dove è installato l'Adobe dobbiamo trovare la chiave di registro corretta che solitamente si trova in:
' Software\Adobe\Adobe Acrobat\7.0\InstallPath oppure
' Software\Adobe\Acrobat Reader\5.0\InstallPath
'Quello che è importante trovare è la versione di Adobe installata. Se ci sono più versioni installate,
'viene presa l'ultima versione presente
.

Dim values As String() = key.GetSubKeyNames()
Dim maxVersion As String
= "0"

For Each s As String In values
 
Try
   If (Double.Parse(s) > Double.Parse(maxVersion))
Then
        
maxVersion = s
   End
If
 Catch ex As
Exception
 End
Try
Next

If (maxVersion = "0")
Then
  'Se non è stata trovata una versione di Adobe installata, il pdf viene aperto sulla prima pagina

 
ApriFile(buf, Nothing)
Else
   'Il percorso nel registro è stato costruito. Estraiamo il percorso di installazione di Adobe che solitamente è:
   ' C:\Programmi\Adobe\Acrobat 7.0\Acrobat oppure C:\Programmi\Adobe\Acrobat 7.0\Reader

  
pathKey = pathKey & maxVersion & "\InstallPath\"
   key = Registry.LocalMachine.OpenSubKey(pathKey)

   'La variabile pathAdobe dovrà contenere il percorso di installazione di Adobe.E' necessario controllare su è presente Acrobat Reader
   '(l'eseguibile è acrord32.exe) oppure Adobe Acrobat (l'eseguibile è acrobat.exe)

   Dim pathAdobe As String
   pathAdobe = key.GetValue("") & "\acrord32.exe"

   If (New FileInfo(pathAdobe).Exists = False) Then 
    
pathAdobe = key.GetValue("") & "\acrobat.exe"
     If (New FileInfo(pathAdobe).Exists = False)
Then
           ApriFile(buf, Nothing
)
          
Return
     End
If
   End
If

   ApriFile(pathAdobe, "/A page=" & pagina & " " & buf)
End
If

Infine il metodo per lanciare l'apertura del pdf:

Private Sub ApriFile(ByVal pathFile As String, ByVal argomenti As String)
Dim info As System.Diagnostics.ProcessStartInfo = New System.Diagnostics.ProcessStartInfo(pathFile)
info.UseShellExecute = True
info.Verb = "Open"

If (argomenti <> Nothing And argomenti <> "") Then
  
info.Arguments = argomenti
End If

System.Diagnostics.Process.Start(info)
End Sub

 

P.S: Questo post l'ho potuto scrivere anche grazie all'aiuto di Raffaele Rialdi che mi ha aiutato nella risoluzione del problema nel forum di microsoft (qui). Quindi un doveroso grazie va anche a lui!!!

 

 

Copyright © Sara Fabris