2012-09-12 3 views
8

Je donne les résultats suivants:Mot de passe protéger un fichier PDF

  • routine X qui crée un fichier PDF sur une base quotidienne.
  • routine Y qui attache ce fichier à un courrier électronique Outlook et l'envoie aux destinataires.

Les deux ci-dessus sont en VBA. Ils sont appelés à partir d'une application console C#.

Une fois le fichier PDF créé, je dois le protéger par mot de passe. Pour ce faire via VBA sans avoir à acheter un logiciel tiers est très impliqué.

Quelle est la solution la plus simple utilisant C#?

(je suis soupçonnant qu'il y aura une relation inverse entre la quantité que nous dépensons et la complexité de la réponse!)

+0

Si vous avez seulement besoin de mot de passe pour protéger votre fichier pdf, utilisez http://itextpdf.com/ library. Pour plus d'informations allez à: http://stackoverflow.com/questions/370571/password-protected-pdf-using-c-sharp –

+3

@DarshanJoshi: iText n'est pas gratuit pour un usage commercial. –

+0

@DanielHilgarth deux personnes ont voté pour fermer cette question - J'ai essayé d'être très précis; Y a-t-il des modifications possibles que je peux faire pour le rendre plus acceptable? – whytheq

Répondre

10

PDFSharp devrait être en mesure de protéger un fichier PDF avec un mot de passe:

// Open an existing document. Providing an unrequired password is ignored. 
PdfDocument document = PdfReader.Open(filename, "some text"); 

PdfSecuritySettings securitySettings = document.SecuritySettings; 

// Setting one of the passwords automatically sets the security level to 
// PdfDocumentSecurityLevel.Encrypted128Bit. 
securitySettings.UserPassword = "user"; 
securitySettings.OwnerPassword = "owner"; 

// Don't use 40 bit encryption unless needed for compatibility reasons 
//securitySettings.DocumentSecurityLevel = PdfDocumentSecurityLevel.Encrypted40Bit; 

// Restrict some rights. 
securitySettings.PermitAccessibilityExtractContent = false; 
securitySettings.PermitAnnotations = false; 
securitySettings.PermitAssembleDocument = false; 
securitySettings.PermitExtractContent = false; 
securitySettings.PermitFormsFill = true; 
securitySettings.PermitFullQualityPrint = false; 
securitySettings.PermitModifyDocument = true; 
securitySettings.PermitPrint = false; 

// Save the document... 
document.Save(filename); 

Référence :
http://www.pdfsharp.net/wiki/ProtectDocument-sample.ashx

+1

cela semble bon et relativement simple - est-il totalement open source? i.e même pour un usage commercial, c'est gratuit? – whytheq

+2

@whytheq: [Oui] (http://www.pdfsharp.net/Licensing.ashx), il est libre d'utiliser même dans les produits commerciaux. –

+0

eu une pièce de théâtre cet après-midi - excellent; J'ai importé tous les dossiers de code source ... même eu un petit nez à travers le code source! – whytheq

Questions connexes