티스토리 뷰
1. UIView(xib)파일 만들기
먼저 xib 파일을 하나 만든다.
Attributes inspector 에서 Simulated Metrics - Size 를 Inferred 에서 Freeform 으로 바꾼다.
그리고 Size inspetor 에서 Width와 Height를 A4용지의 크기에 맞게 조절을 한다.
UIView를 상속받는 클래스를 생성하고 위에서 만든 xib파일의 File's Owner과 연결한다.
2. UIView를 PDF 로 저장
위에서 만든 UIView오브젝트를 로드하기 위해서는 아래와 같이 먼저 uiView오브젝트를 생성하여야 된다.
UIView *rootView = [[[NSBundle mainBundle] loadNibNamed:@"SampleUIView" owner:self options:nil] objectAtIndex:0];
생성된 UIView 오브젝트는 PDFCreate클래스를 이용하여 PDF파일로 변환후 (현재로서는 Documents)폴더에 저장하게 된다. createPDFformUIView는 두개의 파라미터를 받는데 하나는 PDF로 생성될 UIView 이고 다른 하나는 저장될 파일명 이다.
-(void)createPDFfromUIView:(UIView*)aView saveToDocumentsWithFileName:(NSString*)aFilename
createPDFfrom메소드에 대한 내용설명
// byte arry를 저장하기 위한 배열선언
NSMutableData *pdfData = [NSMutableData data];
// UIGraphics에 위에서 생성산 어레이와 변환될 UIview의 주소를 전달한다.
UIGraphicsBeginPDFContextToData(pdfData, aView.bounds, nil);
// 다음페이시 생성시 한번 더 호출
UIGraphicsBeginPDFPage();
// 모든페이지 생성완료 후 호출
UIGraphicsEndPDFContext();
// 파일이 저장될 경로를 가져온다
NSArray* documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
NSString* documentDirectory = [documentDirectories objectAtIndex:0];
NSString* documentDirectoryFilename = [documentDirectory stringByAppendingPathComponent:aFilename];
// 저장된 경로로 파일을 저장한다.
[pdfData writeToFile:documentDirectoryFilename atomically:YES];
NSLog(@"documentDirectoryFileName: %@",documentDirectoryFilename);
3. 저장된 PDF를 다른프로그램으로 보내기
IOS에서 생성된 PDF파일은 자신의 도메인의 폴더에 저장된다. 안드로이드와 다르게 프로그램에서 생성되어 저장된 파일은 샌드박스의 보호를 받으며 다른 프로그램(File explore)에서 접근 불 가능하다. 그러므로 저장된 파일을 보기위해서는 UIDocumentInteractionController를 이용하여 파일은 다른 앱으로 전송하여 저장 하여야 한다.
위에서 생성하여 저장된 파일을 다른 프로그램으로 보내기위해서는 UIDocumentInteractionController를 활용하며 생성자 파라미터로 저장된 파일의 경로를 보내주면 된다.
UIDocumentInteractionController *docController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:documentDirectoryFilename]];
docController.delegate = self;
[docController presentPreviewAnimated:YES];
'IOS' 카테고리의 다른 글
레이아웃 - 스크롤뷰의 컨텐츠 추가 삭제 하기 (0) | 2018.08.28 |
---|---|
IOS 스레드 제어 (0) | 2018.08.28 |
Property (0) | 2018.03.14 |
클래스 오브젝트 초기화 (0) | 2017.03.29 |
@Property, @Synthesize, @Dynamic (0) | 2017.03.29 |