2016-07-21 1 views
0

JSON에서 PDF를 저장하고 있습니다. 나는 응용 프로그램 문서 디렉토리의 파일 경로로 이동하면 내가 올바른 파일을 확인하고 난 PDF를 열 수 없습니다 PDF, 을 열려고하고,이 오류가 얻을 :PDF를 문서에 저장 (PDF가 손상됨)

enter image description here

enter image description here

파일 경로가 좋으며 문서가 있지만 손상되었거나 손상되었습니다. 나는 이것이 NSData와 관련이 있다고 가정 할 것이지만, 내가 뭘 잘못하고 있는지 확실하지 않습니다. 이견있는 사람? 감사!

의 ViewController :

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    NSLog(@"Downloading PDF Started"); 

    // Get selected PDF 
    NSString *pdfSelected = self.pdfArray[indexPath.row]; 
    NSLog(@"PDFSl: %@", pdfSelected); 
    NSData *pdfData = [NSData dataWithContentsOfURL:[NSURL URLWithString:pdfSelected]]; 
    NSLog(@"PDFData: %@", pdfData); 
    NSString *pdfPath =[documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@%ld.pdf",@"savedPDF", (long)indexPath.row]]; 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     [pdfData writeToFile:pdfPath atomically:YES]; 
     NSLog(@"PDF File Saved!"); 
     NSLog(@"PDF File Path: %@", pdfPath); 
     // Save PDF path in defaults for evaluation in Details 
     [defaults setObject:pdfPath forKey:@"cachedPDFPath"]; 
    }); 

}); 

JSON 조각 :

{ 
     "fname": "Nadene", 
     "lname": "Feehan", 
     "email": "[email protected]", 
     "phone": "(152) 555-5321", 
     "image": "http://logok.org/wp-content/uploads/2014/04/Apple-logo-grey-880x625.png", 
     "video": "https://github.com/versluis/Movie-Player/blob/master/Movie%20Player/video.mov?raw=true", 
     "pdf": "http://adcdownload.apple.com/Developer_Tools/Xcode_8_beta_3/Release_Notes_for_Xcode_8_beta_3.pdf" 
    }, 

콘솔 :

PDFSl:http://adcdownload.apple.com/Developer_Tools/Xcode_8_beta_3/Release_Notes_for_Xcode_8_beta_3.pdf

PDFDataLength: 2070

PDF File Path: /Users/user/Library/Developer/CoreSimulator/Devices/1/data/Containers/Data/Application/A/Documents/savedPDF0.pdf

나는 또한 시도 :

NSData *pdfData = [NSData dataWithContentsOfURL:[NSURL URLWithString:pdfSelected] options:NSDataReadingUncached error:&errorPDF]; 내가 오류를 확인하기 위해 콘솔을 선택하면되지만 개발자 계정에 로그인하지 않은 경우 PDFDataError: (null)

+0

콘솔 로그의 내용 (특히, 표시 한 로깅 문의 결과)을 표시 할 수 있습니까? 또한'PDFData'를 로그 할 때 데이터의 길이 (즉,'pdfData.length')를 기록 할 수 있습니까? 또한 흥미로운 것을 보여주지 않는다면 좀 더 단순한'dataWithContentsOfURL :'대신'dataWithContentsOfURL : options : error :'를 사용해보십시오. 실제로 데이터를 성공적으로 다운로드했는지 확인하십시오. – fullofsquirrels

+0

@fullofsquirrels 아무 문제없이 콘솔 로그를 추가했습니다. 당신에게 어떤 것도 눈에 띄는가? – SRMR

+1

개발자 계정으로 로그인하지 않은 경우 URL이 잠긴 것처럼 보입니다. 먼저 로그인 한 상태에서 시도했는데이 페이지로 리디렉션되었습니다. https://developer.apple.com/unautifiedized/ 서명되지 않은 사용자를 처리하는 방법을 정리해야합니다 자신의 개발자 계정에 추가 할 수 있습니다. (일을 더 복잡하게 만들려면 developer.apple.com이 20 분이나 1 시간 동안 사용하지 않으면 자동으로 사인 아웃합니다), 간단히 확인하는 것만 큼 간단하지는 않습니다. HTTP 상태/오류 코드. – fullofsquirrels

답변

1

이 URL처럼 보이는 것도이 고정되지가 있었다 ; 먼저 로그인을 시도했으나이 페이지로 리다이렉트되었습니다 : developer.apple.com/unauthorized. 내용은 예상대로 순수 HTML로되어 있습니다. 대부분의 경우 PDF 파서가 HTML을 보내면 많은 사람들이 추락합니다.

개발자 계정에 로그인하지 않은 사용자를 처리하는 방법을 정리해야합니다. (일을 더 복잡하게 만들기 위해 developer.apple.com은 20 일 후에 자동 서명을합니다. 몇 분 또는 1 시간 동안 사용하지 않음), 단순히 HTTP 상태/오류 코드를 확인하는 것만 큼 간단하지는 않습니다.

관련 문제