2012-09-12 23 views
8

Tengo el siguiente:contraseña proteger un archivo PDF

  • X rutina que crea un archivo PDF en una base diaria.
  • rutina Y que adjunta este archivo a un correo electrónico de Outlook y lo envía a los destinatarios.

Los dos anteriores están en VBA. Se llaman desde una aplicación de consola C#.

Una vez que se ha creado el PDF, necesito protegerlo con contraseña. Hacer esto a través de VBA sin comprar software de terceros es bastante complicado.

¿Cuál es la solución más simple usando C#?

(estoy sospechando que habrá una relación inversa entre la cantidad que gastamos y la complejidad de la respuesta!)

+0

Si solo necesita proteger con contraseña su archivo pdf, utilice http://itextpdf.com/ library. Para obtener más información, consulte esto: http://stackoverflow.com/questions/370571/password-protected-pdf-using-c-sharp –

+3

@DarshanJoshi: iText no es gratuito para uso comercial. –

+0

@DanielHilgarth Dos personas han votado para cerrar esta pregunta: he tratado de ser muy específico; ¿Hay alguna edición posible que pueda hacer para que sea más aceptable? – whytheq

Respuesta

10

PDFSharp debe ser capaz de proteger un archivo PDF con una contraseña:

// 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); 

Referencia :
http://www.pdfsharp.net/wiki/ProtectDocument-sample.ashx

+1

, esto se ve bien y es relativamente simple, ¿es una fuente totalmente abierta? es decir, incluso para uso comercial, ¿es gratis? – whytheq

+2

@whytheq: [Sí] (http://www.pdfsharp.net/Licensing.ashx), es de uso gratuito incluso en productos comerciales. –

+0

tuvo una jugada esta tarde - excelente; He importado todas las carpetas de códigos fuente ... ¡incluso he tenido un pequeño reparo en el código fuente! – whytheq

Cuestiones relacionadas