2012-09-12 80 views
8

Ho il seguente:password proteggere un file PDF

  • X routine che crea un file PDF su base giornaliera.
  • routine Y che collega questo file a una e-mail di Outlook e lo invia ai destinatari.

Entrambi i precedenti sono in VBA. Sono chiamati da un'applicazione console C#.

Una volta creato il PDF, è necessario proteggerlo con password. Per eseguire questa operazione tramite VBA senza l'acquisto di software di terze parti è abbastanza coinvolto.

Qual è la soluzione più semplice con C#?

(Sono sospettare ci sarà una relazione inversa tra il valore che passiamo e la complessità della risposta!)

+0

Se è necessario solo proteggere con password il file PDF, quindi utilizzare http://itextpdf.com/ library. Per maggiori informazioni vai a questo: http://stackoverflow.com/questions/370571/password-protected-pdf-using-c-sharp –

+3

@DarshanJoshi: iText non è gratuito per uso commerciale. –

+0

@DanielHilgarth due persone hanno votato per chiudere questa domanda - Ho cercato di essere molto specifico; ci sono eventuali modifiche che posso apportare per renderlo più accettabile? – whytheq

risposta

10

PDFSharp dovrebbe essere in grado di proteggere un file PDF con una password:

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

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

+1

questo sembra buono e relativamente semplice - è completamente open source? anche per uso commerciale è gratuito? – whytheq

+2

@whytheq: [Sì] (http://www.pdfsharp.net/Licensing.ashx), è gratuito da usare anche in prodotti commerciali. –

+0

ha avuto un gioco questo pomeriggio - eccellente; Ho importato tutte le cartelle del codice sorgente ... ho persino avuto un piccolo naso nel codice sorgente! – whytheq

Problemi correlati