Проблема разблокировки защищенных паролем PDF документов - PullRequest
5 голосов
/ 04 февраля 2010

Мне нужна помощь, чтобы разблокировать зашифрованные документы PDF.

Я безуспешно попробовал следующее.

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

Я убедился, что пароль верен, но функция разблокировки все еще возвращает False.

Я что-нибудь забыл?Что-то не так??

С уважением, Арун Таккар.

1 Ответ

9 голосов
/ 17 декабря 2010

Я предполагаю, что "theTextField" является UITextField, и вы получаете доступ к его текстовому свойству. Проблема заключается в том, что это свойство представляет собой NSString (объект), но вам нужна простая строка C, чтобы разблокировать PDF.

Сделайте это вместо:

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

На самом деле вы пытались разблокировать PDF-файл, используя указатель строки, например 0x4d38340, переведенный в любые символы, полученные в ASCII (или Unicode, не уверены) значениях 4d, 38 и 34 в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...