Ouvrir un fichier pdf protégé avec vb.net [Résolu]

whitelegend 156 Messages postés vendredi 13 janvier 2006Date d'inscription 2 mars 2009 Dernière intervention - 27 janv. 2009 à 10:17 - Dernière réponse : whitelegend 156 Messages postés vendredi 13 janvier 2006Date d'inscription 2 mars 2009 Dernière intervention
- 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 
Afficher la suite 

20 réponses

Répondre au sujet
lolokun 1241 Messages postés mardi 10 octobre 2006Date d'inscription 27 août 2013 Dernière intervention - 27 janv. 2009 à 10:44
+3
Utile
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..
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de lolokun
lolokun 1241 Messages postés mardi 10 octobre 2006Date d'inscription 27 août 2013 Dernière intervention - 27 janv. 2009 à 11:52
+3
Utile
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..
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de lolokun
lolokun 1241 Messages postés mardi 10 octobre 2006Date d'inscription 27 août 2013 Dernière intervention - 27 janv. 2009 à 14:45
+3
Utile
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..
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de lolokun
whitelegend 156 Messages postés vendredi 13 janvier 2006Date d'inscription 2 mars 2009 Dernière intervention - 27 janv. 2009 à 16:27
+3
Utile
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 
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de whitelegend
lolokun 1241 Messages postés mardi 10 octobre 2006Date d'inscription 27 août 2013 Dernière intervention - 27 janv. 2009 à 18:19
+3
Utile
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..
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de lolokun
whitelegend 156 Messages postés vendredi 13 janvier 2006Date d'inscription 2 mars 2009 Dernière intervention - 27 janv. 2009 à 10:50
0
Utile
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 
Commenter la réponse de whitelegend
lolokun 1241 Messages postés mardi 10 octobre 2006Date d'inscription 27 août 2013 Dernière intervention - 27 janv. 2009 à 11:24
0
Utile
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..
Commenter la réponse de lolokun
whitelegend 156 Messages postés vendredi 13 janvier 2006Date d'inscription 2 mars 2009 Dernière intervention - 27 janv. 2009 à 11:30
0
Utile
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 
Commenter la réponse de whitelegend
whitelegend 156 Messages postés vendredi 13 janvier 2006Date d'inscription 2 mars 2009 Dernière intervention - 27 janv. 2009 à 11:32
0
Utile
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 
Commenter la réponse de whitelegend
lolokun 1241 Messages postés mardi 10 octobre 2006Date d'inscription 27 août 2013 Dernière intervention - 27 janv. 2009 à 11:46
0
Utile
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..
Commenter la réponse de lolokun
whitelegend 156 Messages postés vendredi 13 janvier 2006Date d'inscription 2 mars 2009 Dernière intervention - 27 janv. 2009 à 11:59
0
Utile
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 
Commenter la réponse de whitelegend
lolokun 1241 Messages postés mardi 10 octobre 2006Date d'inscription 27 août 2013 Dernière intervention - 27 janv. 2009 à 13:13
0
Utile
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..
Commenter la réponse de lolokun
whitelegend 156 Messages postés vendredi 13 janvier 2006Date d'inscription 2 mars 2009 Dernière intervention - 27 janv. 2009 à 14:16
0
Utile
Toujours pareil....

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

__________________________________________________________________________
Pensez à accepter les réponses qui vous servent 
Commenter la réponse de whitelegend
whitelegend 156 Messages postés vendredi 13 janvier 2006Date d'inscription 2 mars 2009 Dernière intervention - 27 janv. 2009 à 14:53
0
Utile
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 
Commenter la réponse de whitelegend
lolokun 1241 Messages postés mardi 10 octobre 2006Date d'inscription 27 août 2013 Dernière intervention - 27 janv. 2009 à 16:02
0
Utile
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..
Commenter la réponse de lolokun
whitelegend 156 Messages postés vendredi 13 janvier 2006Date d'inscription 2 mars 2009 Dernière intervention - 27 janv. 2009 à 16:13
0
Utile
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 
Commenter la réponse de whitelegend
whitelegend 156 Messages postés vendredi 13 janvier 2006Date d'inscription 2 mars 2009 Dernière intervention - 27 janv. 2009 à 16:30
0
Utile
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  
Commenter la réponse de whitelegend
lolokun 1241 Messages postés mardi 10 octobre 2006Date d'inscription 27 août 2013 Dernière intervention - 27 janv. 2009 à 16:54
0
Utile
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..
Commenter la réponse de lolokun
whitelegend 156 Messages postés vendredi 13 janvier 2006Date d'inscription 2 mars 2009 Dernière intervention - 27 janv. 2009 à 17:00
0
Utile
Avec les même paramètres que ceux que j'ai mis dans mon dernier message?

__________________________________________________________________________
Pensez à accepter les réponses qui vous servent 
Commenter la réponse de whitelegend
whitelegend 156 Messages postés vendredi 13 janvier 2006Date d'inscription 2 mars 2009 Dernière intervention - 27 janv. 2009 à 18:26
0
Utile
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 
Commenter la réponse de whitelegend

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.