coregraphicsを使って、PDFを作成してみる
こっちのがlibharuに比べて、シンプル
理由:特別な外部フレームワークの追加が必要ない
iOS標準のフレームワークだけで簡単に作成できる
利用シーンは、さっきと同じにしてみる
UIImageをPDFに貼付けて作成
//libharuを使わずに、PDFを作ってみる
// pathは、アプリHomeから、ファイル名を含めてたパス
//pngImageは、UIImage。今回は、UIImageに入れたのが、pngだったから、そんな名前にしてみた
- (void) createPDFFileOfCoreGraphics:(NSString*)path
pngImage:(UIImage*)pngImage
{
//ファイル情報の作成
NSMutableDictionary *dic = [[NSMutableDictionary alloc]init];
[dic setObject:@"PDF Title" forKey:(NSString*)kCGPDFContextTitle];
[dic setObject:@"Creator Name" forKey:(NSString*)kCGPDFContextCreator];
//コンテキストとファイルの生成
//NULLのときletterサイズ
//ここでは、イメージのサイズとあわせてみる
CGRect pageRect = CGRectMake(0, 0, pngImage.size.width, pngImage.size.height);
NSURL *url = [NSURL fileURLWithPath:path];
CGContextRef context = CGPDFContextCreateWithURL((CFURLRef)url, &pageRect, (CFMutableDictionaryRef)dic);
// 1ページ開始
CGPDFContextBeginPage(context, (CFMutableDictionaryRef)dic);
UIGraphicsPushContext(context);
//上下反転の対処
CGContextTranslateCTM(context, 0, pageRect.size.height);
CGContextScaleCTM(context, 1, -1);
//イメージの描写
UIImage * img = pngImage;
[img drawAtPoint:CGPointMake(0, 0)];
//[img release];
//1ページ目終了
UIGraphicsPopContext();
CGPDFContextEndPage(context);
// 設定の解放
CGContextRelease(context);
[dic release];
}
基本的にさっきもそうだけど、
パスには、App/Documents/○○.pdf
って、かんじでファイル名は入れてある
libharuと比べると、こっちのが格段に楽
ただ、こっちだと、どこまで細かくPDFに設定できるか不明。
libharuのが、PDFを細かく設定できるイメージをもった(本当か? -o-
作成したPDFのサイズの比較は、
元画像PNG 37KB
coregraphics 33KB
libharu 263KB
なんぞ。この違い -o-
なんか、PDFへの描画の仕方が全く違うとし思えない。
このサイズの差。
それとも、libharuが、画像の変換に弱いだけかなぁ
なぞですなぁ