Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Protection de PDF par mot de passe


Sujet :

WinDev

  1. #1
    Candidat au Club
    Protection de PDF par mot de passe
    Bonjour,

    Je suis à le recherche de la façon de protéger un document PDF par mot de passe pour éviter les modifications.
    Je pensais qu'il fallait utilisé iparamètrepdf mais je n'y arrive pas :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    iParamètrePDF("","Motdepasse",iProtectionModification) // ne fonctionne pas
    iDestination(iPDF,chemin_fichiers+"\HISTFACT\"+vl_nomfacture)	
    iImprimeEtat(etat_facture,0,duplicata)


    Si quelqu'un à une idée, car là je désespère.

    Merci d'avance

  2. #2
    Expert éminent
    Bonjour à toi,

    EDIT : Je pensais que iImprimePDF était faite toi, mais j'ai mal compris

    EDIT2 : tu es bien partie avec iParamètrePDF, mais tu l'as mal utilisé. Tu as mis une chaine vide pour le premier paramètre. D'après ce que j'ai compris, ça veut dire : pas de mot de passe. Regarde l'exemple de l'aide : https://doc.pcsoft.fr/?3046007&n...repdf_fonction
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Make it real not fantasy.

  3. #3
    Candidat au Club
    Merci pour ton aide,

    Je viens d'essayé mais mon pdf est bloqué en lecture et modification par mon mot de passe.

    Pour être plus précise, le but c'est d'envoyé par mail la facture qui donc doit être lisible mais pas modifiable et moi je comprends que le 1er paramètre est celui de la lecture (donc vide) et le second pour la modification.
    Avec tous mes essais, j'ai uniquement réussi à bloquer intégralement mon PDF (c-a-d en lecture et écriture).

    Si tu as d'autres idées je prends.

  4. #4
    Membre actif
    Bonjour;

    Essaie de changer l'ordre des options dans iParamètrePDF(...):

    Exemple :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    iParamètrePDF(iProtectionModification,"","Motdepasse")


    j'ai essayé avec le paramètre d'impression ça fonctionne, je ne sais pas si c'est le cas pour la modification, car j'en possède pas un outil de modification de fichier PDF

    Bob Dev.

  5. #5
    Candidat au Club
    J'ai fait l'essai mais cela ne fonctionne pas non plu, je le teste en envoyant mon document dans le logiciel gratuit en ligne pdf2go et je peux effacer et mettre du texte sans demande de mot de passe.
    Je me demande comment utiliser iprotectionmodification si c'est bien cela que je dois utiliser Grrr..

  6. #6
    Expert éminent
    Dans l'aide, c'est ce l'exemple qu'a donné fouedusa.
    iParamètrePDF([ [, [, [, ]]]])

    Après, il faut peut-être ajouter des paramètres comme iProtectionCommentaire et iProtectionSélection à iProtectionModification.

    Par contre, je ne connais pas les histoires de niveau de protection. C'est toujours la même chose : tu actives une protection mais un petit malin trouve un astuce pour la contourner. C'est peut-être le cas avec pdf2go.

    Essaye de poser la question au ST.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Make it real not fantasy.

  7. #7
    Membre expérimenté
    Citation Envoyé par frenchsting Voir le message


    Par contre, je ne connais pas les histoires de niveau de protection. C'est toujours la même chose : tu actives une protection mais un petit malin trouve un astuce pour la contourner. C'est peut-être le cas avec pdf2go.

    Essaye de poser la question au ST.
    En effet, pdf2go est peut-être capable de passer outre.
    Essaye avec un autre outils de modif.

  8. #8
    Candidat au Club
    J'ai bien essayé cela aussi:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    iParamètrePDF(iProtectionModification," ","Motdepasse",iQualitéMaximale)
    iDestination(iPDF,chemin_fichiers+"\HISTFACT\"+vl_nomfacture)	
    iImprimeEtat(facture_SCAN,0,duplicata)


    le problème est que là on me demande le mot d passe pour le visualiser, seulement moi, je veux seulement que mon doc PDF ne soit pas modifiable.

    Quant à PCsoft, il ne réponde pas car je suis en 23.


    J'étudie une autre solution: le pdfsigne mais j'avoue ne pas encore y arriver non plus.

  9. #9
    Membre chevronné
    Bonjour,
    Citation Envoyé par FRANCOISEAICM Voir le message
    je veux seulement que mon doc PDF ne soit pas modifiable.
    Pourquoi ne pas mettre ton fichier en Lecture Seule (ATTRIB, fAttribut, fAttributLectureSeule ....)
    Il y a peut être plus simple, mais ça tourne

  10. #10
    Membre expérimenté
    Citation Envoyé par Voroltinquo Voir le message
    Bonjour,

    Pourquoi ne pas mettre ton fichier en Lecture Seule (ATTRIB, fAttribut, fAttributLectureSeule ....)
    Ca va pas être dificile à contourner, cà !

  11. #11
    Membre chevronné
    Citation Envoyé par serendib Voir le message
    Ca va pas être dificile à contourner, cà !
    Parfois, ce sont les protections les plus simples qui sont les plus efficaces (cf E.A. Poe.)
    Il y a aussi la possibilité d'utiliser la méthode SetStandardEncription (Classe WriterProperties de l'assemblage iText7,) en ommettant ALLOW_MODIFY_CONTENT dans les autorisations.
    Il y a peut être plus simple, mais ça tourne

  12. #12
    Membre averti
    Sinon protection Adobe par certificat de signature.
    Payant mais de plus en plus courant.

  13. #13
    Membre habitué
    bonjour,

    ce code doit faire ce que vous souhaitez :
    Code WL :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    iParamètrePDF(iProtectionModification,"","Motdepasse",iQualitéMaximale)


    NOTA : il n'y a pas d'espace entre les " dans le 2nd paramètre
    Cordialement JeAn-PhI

  14. #14
    Candidat au Club
    Bonjour,

    La fonction iparamètre tel que Jean-Phi me le dit ne fonctionne pas, avec les attributs c'est une idée, mais j'ai bien peur que quelqu'un puisse la changer.
    Aussi, l'idée de Voroltinquo me plait bien, mais j'avoue ne être très douée dans l'utilisation de DLL, pourriez-vous m'en dire plus.

    Encore merci pour vos participations.

  15. #15
    Membre chevronné
    Je remet la main sur la doc que j'avais commencé à me constituer sur iText7 (qui diffère beaucoup de iText5.)
    En attendant,
    -Qu'est ce que ça donne en passant par iPDFGénérique au lieu de iPDF
    -Qu'est ce que ça donne sans la qualité
    -Une solution tordue :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    sCheminPRN est chaine
     
    sCheminPRN=fConstruitChemin(fRepTemp(),"FACT","PRN")
    iRAZ()
    iDestination(iFichierImprimante,sCheminPRN)
    iImprimeEtat(ETAT_MonEtat)
     
    iDestination(iPDFGénérique,sCheminPDF)
    iParamètrePDF(iProtectionModification,"","MDPProtection)
    iImprime(sCheminPRN)
    Il y a peut être plus simple, mais ça tourne

  16. #16
    Candidat au Club
    Je ne comprends pas moi j'arrive a gommer des éléments du PDF, c'est déprimant.

  17. #17
    Expert éminent
    Bonjour,

    As-tu contacté le ST, comme je l'avais suggéré ?
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Make it real not fantasy.

  18. #18
    Membre chevronné
    Elle l'a fait (cf post #8.)
    En ce qui concerne l'utilisation de iText7
    ça devrait être un truc dans le style (non testé ma doc est resté dans un tiroir chez moi) :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    PROCEDURE PDF_LectureSeule(sCheminPdf est chaine,sMDP est chaine)
    wp est WriteProperties
    writer est un PdfWriter
    MonPdfDocument est un PdfDocument
    MonEtat est Document
     
    wp = allouer un WriterProperties()
     
    wp.setStandardEncryption(null, sMdp, EncryptionConstants.ALLOW_PRINTING,EncryptionConstants.DO_NOT_ENCRYPT_METADATA);
    writer=allouer un PDFWriter(sCheminPDF,wp)
    MonPdfDocument=allouer un PDFDocument(writer)
    MonEtat=allouer un Document(pdfDocument)
    MonEtat.Close()

    Il suffit d'exécuter la procédure une fois l'état créé
    Il y a peut être plus simple, mais ça tourne

  19. #19
    Candidat au Club
    merci beaucoup, je vais tester.

###raw>template_hook.ano_emploi###