내 응용 프로그램에서 많은 PDF 파일을로드합니다.이 시트는로드하는 데 시간이 오래 걸립니다 (iPad 2, iOS 7에서는 10 초 +). 그러면 별도의 시트로드가 가능해졌습니다. 파일 디렉토리는, 아래 applicationDidFinishLaunching()에서 - 나는 다음 사용자 디렉토리에있는 파일을 참조 할 수 그들은 빠르게로드합니다 -하지만 그것은 전혀 차이iOS 지연 PDF로드 중
다음내의 drawRect() 메소드는 PDF
표시에 대한 책임을하지CGContextRef ctx = UIGraphicsGetCurrentContext();
//PDF might be transparent, assume white paper - set White Background
[[UIColor whiteColor] set];
CGContextFillRect(ctx, rect);
//PDF File Path
//"pdf" refers to the location in the directory where the file is saved"
CGPDFPageRef page1 = CGPDFDocumentGetPage(pdf, 1);
//Flip coordinates
CGContextGetCTM(ctx);
CGContextScaleCTM(ctx, 1, -1);
CGContextTranslateCTM(ctx, 0, -rect.size.height);
//Get the rectangle of the cropped inside
CGRect mediaRect = CGPDFPageGetBoxRect(page1, kCGPDFCropBox);
CGContextScaleCTM(ctx, rect.size.width/mediaRect.size.width,
rect.size.height/mediaRect.size.height);
//Draw PDF
CGContextDrawPDFPage(ctx, page1);
CGPDFDocumentRelease(pdf);
idInit() 메소드에서 선언 된 파일 위치의 디렉토리
NSArray *documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
NSString *documentDirectory = [documentDirectories objectAtIndex:0];
NSString *dataPath = [documentDirectory stringByAppendingPathComponent:
[NSString stringWithFormat:@"PDFSource"]];
NSString *documentDirectoryFilename = [dataPath stringByAppendingPathComponent:
[NSString stringWithFormat:@"BUEvenous.pdf"]];
CFStringRef path = CFStringCreateWithCString (NULL, [documentDirectoryFilename UTF8String], kCFStringEncodingUTF8);
CFURLRef url = CFURLCreateWithFileSystemPath (NULL, path, kCFURLPOSIXPathStyle, 0);
CFRelease (path);
pdf = CGPDFDocumentCreateWithURL(url);// 2
CFRelease(url);
당신의 도움이 지침, 제안은, 어떤 점은 내가 더 빨리이 부하를 만들 수있는 방법의 잘못된거야 곳으로 대단히 감사합니다
편집
@DavidvanDriessche은 주셔서 감사합니다 제안, 그것은 내가 사용하고있는 PDF 파일이 실제로 꽤 큽니다 (약 1MB), 테스트에서 배운 것은 PDF 파일을 더 압축하면 = < 500kbs가 아니라는 것입니다. 로딩 시간 문제 - 파일을 압축하면 포함 된 일부 이미지에서 이미지 품질이 떨어집니다. PDF : 또한 iPad 2 일 수도 있습니다 - 새로운 장치에서 실행하여이 게시물에 추가하려고합니다.
다른 제안 사항이 있습니까?
작업
모든 PDF 파일에서 발생합니까 아니면 특정 파일에서만 볼 수있는 것입니까? PDF의 일부 기능은 다른 기능보다 훨씬 비쌉니다. 예는 벡터 요소가 많고 클리핑이 계속되는 복잡한 페이지와 JPEG-2000 인코딩 이미지로 구성되어 있습니다. 그 중에서도 오래된 장치 (예 : iPad 2)의 상당수는 메모리가 매우 제한되어 있고 무거운 파일을 처리하는 데 프로세서가 매우 느립니다. 그러나 PDF가 무엇인지 먼저 확인하십시오. 차이점을 확인하기 위해 매우 간단한 PDF 파일로 시도하십시오. –
@DavidvanDriessche 질문에 대한 편집으로 답변을 추가 할 것이라고 생각했는데 비슷한 문제를 해결하는 데 도움이 될 수 있습니다. –