Ouvrir un fichier pdf protégé avec vb.net

Résolu
whitelegend Messages postés 156 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 2 mars 2009 - 27 janv. 2009 à 10:17
whitelegend Messages postés 156 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 2 mars 2009 - 27 janv. 2009 à 18:26
Salut,

Comme je le dis dans le tire je souhaite ouvrir un fichier pdf protéger en lecture.  (des documents professionnels réservés à certaines personnes) .

Mon problème est que je rencontre de gros soucis pour piloter adobe acrobat reader.

La version d'adobe utilisée sur les postes est la version 7.0

J'en suis ici et je rencontre plusieurs problèmes:

Dim myAcRd As Acrobat.CAcroApp
Dim myPdf As Acrobat.CAcroPDDoc

myAcRd = CreateObject("AcroExch.App")
Sleep(5000) 'si je ne mets pas ça l'interface d'Acrobat plante... ?????
myAcRd.Show()

myPdf = CreateObject("AcroExch.PDDoc")
myPdf.Open("C:\Documents and Settings\lopesc\Desktop\AD-049.pdf") 'ici pas d'erreur mais le fichier ne s'ouvre pas "visuellement"...

Mes différent problèmes sont:

-Pourquoi mon interface d'Acrobat plante (Impossible de la fermer sauf en tuant le processus) si je ne mets pas de tempo...
-Pourquoi mon fichier ne s'ouvre pas visuellement car l'appli ne me renvoie pas d'erreur j'en conclu donc qu'elle charge bien le fichier ( j'ai essayé avec un fichier non protéger aussi)
-Quand j'aurais réussi à ouvrir un fichier PDFnon protégé comment en ouvrir un protégé par mot de passe ?

Voila mes 3 axes de recherches qui me posent un énorme problème

Merci à tous ceux qui auront des idées ^^

LC
__________________________________________________________________________________________
Pensez à accepter les réponses qui vous servent 

20 réponses

lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
27 janv. 2009 à 10:44
Bonjour,

Je ne sais pas si cela peut répondre à ta demande, mais tu peux également regarder du côté de Process.start qui ouvrira le fichier mentionné en paramètre avec le programme par défaut.

L'expérience, c'est une connerie par jour, mais jamais la même..
3
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
27 janv. 2009 à 11:52
Pardon, j'ai oublié quelques trucs et pas testé mais ça devrait être mieux comme ça :

Dim MyProcess
As
New Process()

Dim startInfo
As
New ProcessStartInfo(
"")

Dim Pwd As System.Security.SecureStringPwd New System.Security.SecureStringMyProcess.StartInfo.WindowStyle ProcessWindowStyle.Maximized
MyProcess.StartInfo.FileName "C:\doc.pdf"MyProcess.StartInfo.Password Pwd

MyProcess.Start()

L'expérience, c'est une connerie par jour, mais jamais la même..
3
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
27 janv. 2009 à 14:45
As-tu essayé de lancer ce code pour ouvrir un pdf non sécurisé en supprimant les lignes se rapportant au password dans le code?
Dans tes références de projet, as-tu bien la classe system du framework 2.0?

L'expérience, c'est une connerie par jour, mais jamais la même..
3
whitelegend Messages postés 156 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 2 mars 2009
27 janv. 2009 à 16:27
Bon j'ai un peu de nouveau,

Ce code fonctionne: (j'ai changé la propriété de UseShellExecute à True)

        Dim MyProcess As New Process()

        MyProcess.StartInfo.WindowStyle = ProcessWindowStyle.Maximized

        MyProcess.StartInfo.FileName = "C:\...\2009-01-26.pdf"

        MyProcess.StartInfo.UseShellExecute = True

        MyProcess.Start()

Ensuite si j'essaie ce même code en rajoutant:

        Dim Pwd As System.Security.SecureString

        Pwd = New System.Security.SecureString

        Pwd.AppendChar("moncoeuramoureux")

        MyProcess.StartInfo.Password = Pwd

Là j'ai un plantage qui me dit que je dois passer "MyProcess.StartInfo.UseShellExecute" à False pour qua ca fonctionne.
Or quand je la passe à False je me retrouve avec l'erreur "L'exécutable spécifié n'est pas une application Win32 valide." ...

Voilà ou j'en suis actuellement

LC
__________________________________________________________________________
Pensez à accepter les réponses qui vous servent 
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
27 janv. 2009 à 18:19
Non, juste ceux que j'avais envoyés avant..
Et comme chez moi je n'ai pas vb.net..
Je trouve ça raiment étrange regarde mieux du côté des paramètres :
http://msdn.microsoft.com/fr-fr/library/system.diagnostics.process.start(VS.80).aspx

L'expérience, c'est une connerie par jour, mais jamais la même..
3
whitelegend Messages postés 156 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 2 mars 2009
27 janv. 2009 à 10:50
Salut,

En effet j'avais pensé à ca mais je n'ai pas trouvé comment l'utiliser pour mon fichier pdf en donnant le mot de passe d'ouverture car même les gens qui auront le droit de consulter ne doivent pas connaitre ce mdp. ( il seront logués sous une interface avec un compte personnel)

Je vais néamoins essayer d'approfondir à nouveau cette piste pour voir s'il n'y a pas moyen de s'en servir...

LC

Pensez à accepter les réponses qui vous servent 
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
27 janv. 2009 à 11:24
En effectuant une petite recherche sur la doc MSDN voici ce qui devrait répondre à tes attentes :
Process.Start (String, String, SecureString, String)

L'expérience, c'est une connerie par jour, mais jamais la même..
0
whitelegend Messages postés 156 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 2 mars 2009
27 janv. 2009 à 11:30
Re,

Je connais déjà ça en fait mais je ne réussi pas à le mettre en œuvre...

Dim Pwd As System.Security.SecureString

Pwd = New System.Security.SecureString
Pwd.AppendChar("mon mot de passe ici") ' pour mettre le mot de passe dans Pwd ?

Process.Start("C:\...\Desktop\2009-01-26.pdf", "", Pwd, "")

LC

Pensez à accepter les réponses qui vous servent 
0
whitelegend Messages postés 156 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 2 mars 2009
27 janv. 2009 à 11:32
Ma réponse est quelque peut évasive... dsl

cette syntaxe me renvoie l'erreur : "L'exécutable spécifié n'est pas une application Win32 valide."

LC

Pensez à accepter les réponses qui vous servent 
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
27 janv. 2009 à 11:46
Et comme ceci?

Dim

MyProcess
As
New Process()

Dim startInfo
As
New ProcessStartInfo(
"")

Dim Pwd
As System.Security.SecureStringPwd =

New System.Security.SecureString
Pwd.AppendChar("mdp")

startInfo.WindowStyle = ProcessWindowStyle.Maximized
startInfo.Arguments "C:\Doc.pdf"startInfo.Password Pwd

Process.Start(startInfo)

L'expérience, c'est une connerie par jour, mais jamais la même..
0
whitelegend Messages postés 156 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 2 mars 2009
27 janv. 2009 à 11:59
Re,

Le code que tu me donne me renvoie une erreur facile à contourner:

"L'objet Process doit avoir la propriété UseShellExecute définie à false pour démarrer un processus en tant qu'utilisateur."

Je rajoute donc la ligne:

MyProcess.StartInfo.UseShellExecute = False

et je retombe à nouveau sur mon erreur de départ:

"L'exécutable spécifié n'est pas une application Win32 valide."

Je connais mal cette commande (process.start) donc je nage un peu là ...

LC

__________________________________________________________________________
Pensez à accepter les réponses qui vous servent 
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
27 janv. 2009 à 13:13
Et en rajoutant ça?
Dim

startInfo
As
New ProcessStartInfo(
"AcroRd32.exe")

L'expérience, c'est une connerie par jour, mais jamais la même..
0
whitelegend Messages postés 156 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 2 mars 2009
27 janv. 2009 à 14:16
Toujours pareil....

Je ne comprends pas pourquoi car ce code à l'air très bien ... :S

__________________________________________________________________________
Pensez à accepter les réponses qui vous servent 
0
whitelegend Messages postés 156 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 2 mars 2009
27 janv. 2009 à 14:53
Oui, j'ai bien essayé d'ouvrir un fichier non protégé.

Et non je ne vois pas de référence dans mon projet à propos du framework 2.0 ...

je ne connais pas le nom de cette référence à importer, comme se nomme t'elle stp ?

LC (merci d'avance pour toute l'aide qu tu m'apporte ;) )
__________________________________________________________________________
Pensez à accepter les réponses qui vous servent 
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
27 janv. 2009 à 16:02
Dans les références de ton projet, il faut que la référence "System" soit importée mais logiquement je ne pense pas que ton problème vienne de là..quand tu tapes process. tu as bien un choix de méthodes qui apparaît?

Et donc sans mot de passe toujours le même souci?
et Visual studio  2003 ou 2005?

L'expérience, c'est une connerie par jour, mais jamais la même..
0
whitelegend Messages postés 156 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 2 mars 2009
27 janv. 2009 à 16:13
j'avoue que tu m'avais un peu perdu avec l'histoire du framework importé ou pas^^ mais oui j'ai bien un choix de méthodes et même process qui apparait directement quand je commence à le taper donc pas de soucis à ce niveau.

Je pense d'ailleur que VB2008 me relèverait une erreur avant de même de compiler le code.

Je te confirme que sans mdp j'ai toujours le même soucis.

Pour VS2003 ou 2005 je ne les aient pas installés ni téléchargés d'ailleurs ... et j'avoue que si tu avais un des 2 ca serait super sympa si tu pouvais contrôler que ce code fonctionne ou non avec ceux là ... :)

Pour le moment le seule chose qui fonctionne bien est l'ouverture d'un fichier pdf avec ou sans mdp avec la commande:

Process.Start("C:\Documents and Settings\lopesc\Desktop\2009-01-26.pdf")

bien sur dans le cas des fichier protégés on se retrouve avec une petite fenêtre sous adobe qui invite à entrer le mdp.

En regardant bien la fonction process.start je me pose une question ... le paramètre mot de passe sert à quoi ? entrer un mdp pour démarer un application qui demande un mdp pour démarer ou entrer un mdp pour un document qui s'ouvrirai sous cette application ( suis-je clair dans mon image ? )

LC
__________________________________________________________________________
Pensez à accepter les réponses qui vous servent 
0
whitelegend Messages postés 156 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 2 mars 2009
27 janv. 2009 à 16:30
Lol..

Je lève la main droite et dit " Je le jure" : "Ce mot de passe n'est pas de moi, mais j'ai oublié de l'enlever"

LC

_________________________________________________________________________________________
Pensez à accepter les réponses qui vous servent  
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
27 janv. 2009 à 16:54
Oui j'ai testé en 2003 et 2005 sans avoir mis de mot de passe et cela fonctionne correctement.

L'expérience, c'est une connerie par jour, mais jamais la même..
0
whitelegend Messages postés 156 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 2 mars 2009
27 janv. 2009 à 17:00
Avec les même paramètres que ceux que j'ai mis dans mon dernier message?

__________________________________________________________________________
Pensez à accepter les réponses qui vous servent 
0
whitelegend Messages postés 156 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 2 mars 2009
27 janv. 2009 à 18:26
C'est bien ce que j'avais interprété ..."Démarre une ressource de processus en spécifiant le nom d'une
application, un nom d'utilisateur, un mot de passe et un domaine et
associe la ressource avec un nouveau composant Process.
"
Le mdp donner sert a se loguer suir une appli avec un user et pas donner le mdp en paramètre à la fenêtre de l'appli qui demande le mdp du fichier...

C'est bête ca ...

Je vais tenter un nouveau post pour savoir comme prendre la main, a ce stade sur une fenetre windows active pour lui donner des info.

Merci

LC
__________________________________________________________________________
Pensez à accepter les réponses qui vous servent 
0
Rejoignez-nous