Я написал довольно хороший пример с киоском , который выполняет загрузку, отображает индикатор выполнения, сохраняет pdf в каталоге документов, отображает, открывает - все, что вы хотите.
Поддержка пароля включена и выглядит следующим образом:
const char *key = [passwordString UTF8String];
BOOL success = CGPDFDocumentUnlockWithPassword(pdf, key);