| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- //
- // pdfCreator.m
- // iSales-NPD
- //
- // Created by Ray on 10/21/16.
- // Copyright © 2016 United Software Applications, Inc. All rights reserved.
- //
- #import "pdfCreator.h"
- #import "UIKit/UIDocument.h"
- #import "RAUtils.h"
- #import "RAPDFPage.h"
- @implementation pdfCreator
- +(void) drawPage:(CGContextRef)context template:(NSMutableDictionary*) page size:(CGRect) rect dataSource:(NSMutableDictionary*)data
- {
-
- RAPDFPage* pdfPage = [[RAPDFPage alloc] init:page size:rect];
-
- [pdfPage Draw:context dataSource:data];
-
- //NSMutableDictionary* header=page[@"header"] ;
- // double margin_left=[page[@"margin_left"] doubleValue];
- // double margin_left=[page[@"margin_left"] doubleValue];
- }
- +(int) QueryPageCount:(CGContextRef)context template:(NSMutableDictionary*) page size:(CGRect) rect dataSource:(NSMutableDictionary*)data
- {
-
- RAPDFPage* pdfPage = [[RAPDFPage alloc] init:page size:rect];
-
- return [pdfPage QueryPageCount:context dataSource:data];
-
- //NSMutableDictionary* header=page[@"header"] ;
- // double margin_left=[page[@"margin_left"] doubleValue];
- // double margin_left=[page[@"margin_left"] doubleValue];
- }
- +(int)QueryTotalPage:(CGContextRef)pdfContext template:(NSMutableDictionary*) template dataSource:(NSMutableDictionary*)data
- {
-
- int count=0;
- //获取路径
-
- // NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);//坐标
- //
- // NSString *saveDirectory=[paths objectAtIndex:0];
- //
- // NSString *saveFileName=@"myPDF.pdf";
- //
- // NSString *newFilePath=[saveDirectory stringByAppendingPathComponent:saveFileName];
- //
- // const char *filename=[newFilePath UTF8String];
- //
- // DebugLog(@"%@",newFilePath);
- //设置页面大小 Letter纸
-
- CGRect papersize=CGRectMake(0, 0, [template[@"paper"][@"width"] intValue], [template[@"paper"][@"height"] intValue]);
-
- //关联上下文的对象
-
- // CGContextRef pdfContext;
-
- // CFStringRef path;
- //
- // CFURLRef url;
- //
- // path=CFStringCreateWithCString(NULL, filename, kCFStringEncodingUTF8);
- //
- // url=CFURLCreateWithFileSystemPath(NULL, path, kCFURLPOSIXPathStyle, 0);
- //
- //
- // pdfContext=CGPDFContextCreateWithURL(url, &papersize, nil);
- //
-
- NSMutableDictionary* pages=template[@"pages"];
- for(int i=0;i<[pages[@"count"] intValue];i++)
- {
- NSMutableDictionary* page=pages[[ NSString stringWithFormat:@"page_%d",i ] ];
-
- count+=[self QueryPageCount:pdfContext template:page size:papersize dataSource:data];
- }
- //开始画pdf
-
- // NSString *temtext=[[NSString alloc]init];
- //
- // const char *text=(char *)[temtext UTF8String];
- //
- // int width;
- //
- // int height;
- //
-
- // [self newpage:pdfContext size:papersize];
-
-
-
- // CGContextRelease(pdfContext);
- return count;
-
- }
- +(NSString*)CreatePdf:(NSMutableDictionary*) template dataSource:(NSMutableDictionary*)data
- {
-
-
- //获取路径
-
- NSString* tempDir = NSTemporaryDirectory();
-
- NSString *saveFileName=[NSString stringWithFormat:@"%@.pdf",[[NSUUID UUID ] UUIDString] ] ;
-
- NSString *newFilePath=[tempDir stringByAppendingPathComponent:saveFileName];
-
- const char *filename=[newFilePath UTF8String];
-
- DebugLog(@"%@",newFilePath);
- //设置页面大小 Letter纸
-
- CGRect papersize=CGRectMake(0, 0, [template[@"paper"][@"width"] intValue], [template[@"paper"][@"height"] intValue]);
-
- //关联上下文的对象
-
- CGContextRef pdfContext;
-
- CFStringRef path;
-
- CFURLRef url;
-
- path=CFStringCreateWithCString(NULL, filename, kCFStringEncodingUTF8);
-
- url=CFURLCreateWithFileSystemPath(NULL, path, kCFURLPOSIXPathStyle, 0);
-
- CFBridgingRelease(path);
- pdfContext=CGPDFContextCreateWithURL(url, &papersize, nil);
-
- CFBridgingRelease(url);
- data[@"TOTAL_PAGE"]= [NSNumber numberWithInt:[self QueryTotalPage:pdfContext template:template dataSource:data]];
-
- NSMutableDictionary* pages=template[@"pages"];
- for(int i=0;i<[pages[@"count"] intValue];i++)
- {
- NSMutableDictionary* page=pages[[ NSString stringWithFormat:@"page_%d",i ] ];
-
- data[@"CURRENT_PAGE"]=[NSNumber numberWithInt:[data[@"CURRENT_PAGE"] intValue]+1];
-
- [self drawPage:pdfContext template:page size:papersize dataSource:data];
- }
- //开始画pdf
-
- // NSString *temtext=[[NSString alloc]init];
- //
- // const char *text=(char *)[temtext UTF8String];
- //
- // int width;
- //
- // int height;
- //
-
- // [self newpage:pdfContext size:papersize];
-
-
-
- CGContextRelease(pdfContext);
-
- // NSURL* nsurl=CFBridgingRelease(url);
-
- return newFilePath;
-
- }
- @end
|