2010-02-04 3 views
5

Ich brauche Hilfe beim Entriegeln von verschlüsselten PDF-Dokumenten.Problem Entsperren von passwortgeschützten PDF-Dokumenten

Ich habe Folgendes ohne Erfolg versucht.

CFURLRef pdfURL = CFURLCreateWithFileSystemPath (NULL, documentsDirectory, kCFURLPOSIXPathStyle, 0); //1 
pdf = CGPDFDocumentCreateWithURL((CFURLRef)pdfURL); 
BOOL encrypted = CGPDFDocumentIsEncrypted(pdf); 
if (encrypted) { 

// Try 1: 

    const char *str = (char *)theTextField.text; 
    BOOL _unlock = CGPDFDocumentUnlockWithPassword(pdf,str); 

//Try 2: 

    NSString *str1 = @"password"; 
    BOOL _unlock1 = CGPDFDocumentUnlockWithPassword(pdf,str1); 
} 

Ich stellte sicher, dass das Passwort korrekt ist, aber die Entsperrfunktion gibt immer noch False zurück.

Ich habe etwas vergessen? Ist irgendwas falsch??

Grüße, Arun Thakkar.

Antwort

9

Ich nehme an, dass "theTextField" ein UITextField ist, und Sie auf seine Texteigenschaft zugreifen. Das Problem besteht darin, dass diese Eigenschaft eine NSString (ein Objekt) ist, aber Sie benötigen eine einfache C-Zeichenfolge, um die PDF zu entsperren.

diese stattdessen tun:

const char *key = [theTextField.text UTF8String]; 
BOOL success = CGPDFDocumentUnlockWithPassword(pdf, key); 

Sie haben tatsächlich die PDF zu entsperren versuchen, die Zeichenfolge des Zeigers, so etwas wie 0x4d38340, übersetzt in das, was Zeichen verwenden, werden durch ASCII erzeugt (oder Unicode, nicht sicher) Werte 4d, 38 und 34 in diesem Fall.

+1

Tnx marcus und Arun Thakkar, beide haben mir geholfen, meine Aufgabe zu erfüllen – Dinakar