https://itunes.apple.com/us/app/altibase-hdb-manual/id597190444?l=ko&ls=1&mt=8
처음 만들때는 QuartzCore 이용해서 pdf를 다루는 API를 직접 이용해서 작성해 보았다.
확대 축소 부 터 해서 제스처에 의한 페이지 컨트롤
모든 게 부 자연스러웠고
인터넷에서 PDF 를 다루는 코드 들을 조합해서 나름 만들었지만 매우 불안정했다.
특히 검색 속도는 너무 느렸다.
http://support.fastpdfkit.com/kb/how-to/three-minutes-implementation-guide
fastpdfkit이라는 라이브러를 이용해서 바로 프로그램을 업데이트 했다.
성능 속도 모든 면에서 우수하다.
단 무료 버전에 경우 로고가 잠시 뜨지만
간단한 PDF를 보여주어야 할 경우에 이를 이용하는 것이 좋은 듯 하다.
위 링크 3분 가이드를 그대로 한다면 어렵지 않게 구현 가능 할 것이다.
실제로 ALTIBASE HDB Manual app에서
ManualViewController.h
ManualViewController.m
#import <UIKit/UIKit.h>
#import <FastPdfKit/FastPdfKit.h>
@class MFDocumentManager;
@interface ManualViewController : UIViewController <UITableViewDataSource, UITableViewDelegate, MFDocumentViewControllerDelegate>
{
UITableView * tableView_;
NSArray *keys_;
NSDictionary * datasource_;
NSDictionary * filename_;
}
-(void)actionOpenPlainDocument:(NSString *)docName withPage:(NSInteger)pageNum;
@end
ManualViewController.m
/테이블 뷰 선택
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// PDFViewController * pdfviewController = [[[PDFViewController alloc] init]autorelease];
NSString * filename = [[filename_ objectForKey:key] objectAtIndex:indexPath.row];
//pdfviewController.filename = filename;
//현재 페이지 번호 전달
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
NSInteger pageNum = [userDefault integerForKey:filename];if (pageNum == 0) {
pageNum = 1;
}
[self actionOpenPlainDocument:filename withPage:pageNum];
//pdfviewController.currentPage = pageNum;
//[self.navigationController pushViewController: pdfviewController animated:YES];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
/** Set document name */
NSString *documentName = docName;
/** Get temporary directory to save thumbnails */
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
/** Set thumbnails path */
NSString *thumbnailsPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",documentName]];
/** Get document from the App Bundle */
NSURL *documentUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:documentName ofType:@"pdf"]];
/** Instancing the documentManager */
MFDocumentManager *documentManager = [[MFDocumentManager alloc]initWithFileUrl:documentUrl];
/** Instancing the readerViewController */
ReaderViewController *pdfViewController = [[ReaderViewController alloc]initWithDocumentManager:documentManager];
/** Set resources folder on the manager */
documentManager.resourceFolder = thumbnailsPath;
/** Set document id for thumbnail generation */
pdfViewController.documentId = documentName;
//pdfViewController.page = pageNum;
/** Present the pdf on screen in a modal view */
//[self presentModalViewController:pdfViewController animated:YES];
[self.navigationController pushViewController: pdfViewController animated:YES];
//현재 페이지 번호 저장
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
[userDefault setInteger:pdfViewController.page forKey:docName];[userDefault synchronize];
/** Release the pdf controller*/
}
댓글 없음:
댓글 쓰기