Pārlūkot izejas kodu

170109
debuting memory leak

Ray Zhang 9 gadi atpakaļ
vecāks
revīzija
fff18df09e

+ 8 - 7
RedAnt ERP Mobile/common/PDFUtils.m

@@ -240,8 +240,8 @@
     CFMutableDictionaryRef myDictionary = NULL;
     myDictionary= CFDictionaryCreateMutable(NULL,
                                             0,
-                                            &kCFTypeDictionaryKeyCallBacks,
-                                            &kCFTypeDictionaryValueCallBacks);
+                                            NULL,
+                                            NULL);
     //    CFDictionarySetValue(myDictionary,
     //                         kCGPDFContextTitle,
     //                         CFSTR("Photo from iPrivate Album"));
@@ -255,7 +255,7 @@
     //    CFDictionarySetValue(myDictionary, kCGPDFContextCreator, CFSTR("My Name"));
     //设置文档尺寸
     
-    
+//    CFDictionarySetValue(myDictionary, kCGPDFContextOwnerPassword, CFNUMBERCREATE (40));
     CFDictionarySetValue(myDictionary, kCGPDFContextOwnerPassword, CFSTR("usai2010"));
 //    CFDictionarySetValue(myDictionary, kCGPDFContextUserPassword, CFSTR("usai2010"));
     CFDictionarySetValue(myDictionary, kCGPDFContextAllowsPrinting, kCFBooleanTrue);
@@ -263,7 +263,7 @@
     
 //
     
-    pdfContext=CGPDFContextCreateWithURL(url, &docsize,nil);
+    pdfContext=CGPDFContextCreateWithURL(url, &docsize,myDictionary);
     
     CFRelease(myDictionary);
     CFRelease(url);
@@ -310,7 +310,7 @@
             }
             else if([control_type isEqualToString:@"TextView"]||[control_type isEqualToString:@"Label"]||[control_type isEqualToString:@"DatePicker"])
             {
-                continue;
+                
                 
                 NSString* value = control[@"value"];
                 if(value.length==0)
@@ -341,7 +341,7 @@
                     NSArray* marker=cadedate[[value[c] intValue]];
                     if(marker.count>=3)
                     {
-                        continue;
+                        
                         NSString* value = marker[0][0];
                         if(value.length==0)
                             continue;
@@ -353,7 +353,7 @@
                     }
                     else
                     {
-                        continue;
+                        
                         CGRect marker_rect= CGRectMake([marker[1][0] floatValue] ,[marker[1][1] floatValue], marker_size, marker_size);
                         PDFDrawable * marker_drawable = [[RectDrawable alloc] init:[self WindowRect2PDFRect:marker_rect pdf_rect:papersize window_size:window_rect.size] color:@"0x000000"];
                         if(marker_drawable)
@@ -393,6 +393,7 @@
         
         //        CFBridgingRelease(page);
     }
+    CGPDFContextClose(pdfContext);
     CGContextRelease(pdfContext);
 
     

+ 1 - 0
RedAnt ERP Mobile/common/pdfCreator/PDFDrawable.m

@@ -60,6 +60,7 @@
 -(void) DrawBound:(CGContextRef) context dataSource:(NSMutableDictionary*)data ParentRect:(CGRect)p_rect startX:(double) x startY:(double) y flipHeight:(double)flip_height range:(NSRange)between_header_and_footer
 {
     
+//    return ;
     if(!PDF_DEBUG&&![self.drawableTemplate[@"draw_bound"] boolValue] )
     return;
     

+ 8 - 61
RedAnt ERP Mobile/common/pdfCreator/PDFPage.m

@@ -144,73 +144,20 @@
     if(drawable_obj==nil)
         return;
     
-//    self.data=data;
-//    
-//    
-//    
-//    GroupDrawable* pageHeader = [[GroupDrawable alloc]init:self.header];
-//    self.header_height=pageHeader.rect.size.height;
-//    pageHeader.delegate = self;
-//    GroupDrawable* pageFooter = [[GroupDrawable alloc]init:self.footer];
-//    
-//    pageFooter.delegate = self;
-//    
-//    
-//    
-//    
-//    // while (true)
-//    {
-//        // page 去除页眉,页脚后的区域
+    NSLog(@"pdfpage directdraw begin");
+    
         NSRange range = NSMakeRange(0,self.rect.size.height);
-//        //        NSRange range = NSMakeRange(self.drawable_rect.origin.y+pageHeader.rect.size.height, self.drawable_rect.size.height-pageFooter.rect.size.height+self.drawable_rect.size.height);
+
+    
         CGRect rect = self.rect;
     
-//        CGContextBeginPage(context, &rect);
-//        [pageHeader Draw:context dataSource:data ParentRect:(CGRect)self.drawable_rect startX:0 startY:0 flipHeight:self.rect.size.height range:range];
-//        
-//        [pageFooter Draw:context dataSource:data ParentRect:(CGRect)self.drawable_rect startX:0 startY:0 flipHeight:self.rect.size.height range:range];
-//        
-//        for (int i=0;i<[self.pageTemplate[@"contents"][@"count"] intValue];i++)
-//        {
-//            NSMutableDictionary * item =self.pageTemplate[@"contents"][ [NSString stringWithFormat:@"item_%d",i ] ];
-//            PDFDrawable* drawable_obj=nil;
-//            if([item[@"type"] isEqualToString:@"img"])
-//            {
-//                drawable_obj= [[ImageDrawable alloc] init:item];
-//                
-//            }
-//            else if([item[@"type"] isEqualToString:@"line"])
-//            {
-//                drawable_obj= [[LineDrawable alloc] init:item];
-//                
-//            }
-//            else if([item[@"type"] isEqualToString:@"text"])
-//            {
-//                drawable_obj= [[TextDrawable alloc] init:item];
-//                
-//            }
-//            else if([item[@"type"] isEqualToString:@"group"])
-//            {
-//                drawable_obj= [[GroupDrawable alloc] init:item];
-//                
-//            }
-//            else if([item[@"type"] isEqualToString:@"table"])
-//            {
-//                drawable_obj= [[TableDrawable alloc] init:item];
-//                
-//            }
-//            else if([item[@"type"] isEqualToString:@"grid"])
-//            {
-//                drawable_obj= [[GridDrawable alloc] init:item];
-//                
-//            }
+
             drawable_obj.delegate = self;
             [drawable_obj Draw:context dataSource:nil ParentRect:(CGRect)self.drawable_rect startX:0 startY:self.header_height flipHeight:self.rect.size.height range:range];
-//        }
     
-//        CGContextEndPage(context);
-        
-//    }
+    NSLog(@"pdfpage directdraw end");
+
+    
 }
 -(void) Draw:(CGContextRef) context dataSource:(NSMutableDictionary*)data
 {

+ 29 - 29
RedAnt ERP Mobile/common/pdfCreator/TextDrawable.m

@@ -617,7 +617,7 @@
     //
     //    }
     //    else
-    {
+    
         string=[[NSMutableAttributedString alloc] initWithString:self.text];
         //创建字体以及字体大小
         //        CTFontRef ctfont = [self CreateFont:font size:fontsize bold:bold];//CTFontCreateWithName(CFSTR("Helvetica"), fontsize, NULL);
@@ -640,10 +640,10 @@
         string = [self richtext2attributedstring:string font:font size:fontsize bold:bold];
         
         
-        //设置字体间距
-        long number = self.characterSpace;
-        CFNumberRef num = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt8Type, &number);
-        [string addAttribute:(id)kCTKernAttributeName value:CFBridgingRelease(num) range:NSMakeRange(0, [string length])];
+//        //设置字体间距
+//        long number = self.characterSpace;
+//        CFNumberRef num = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt8Type, &number);
+//        [string addAttribute:(id)kCTKernAttributeName value:CFBridgingRelease(num) range:NSMakeRange(0, [string length])];
         //CFRelease(num);
         
         
@@ -653,37 +653,37 @@
         alignmentStyle.spec=kCTParagraphStyleSpecifierAlignment;
         alignmentStyle.valueSize=sizeof(alignment);
         alignmentStyle.value=&alignment;
-        
-        //创建文本,    行间距
-        CGFloat lineSpace=self.lineSpace;//间距数据
-        CTParagraphStyleSetting lineSpaceStyle;
-        lineSpaceStyle.spec=kCTParagraphStyleSpecifierLineSpacing;
-        lineSpaceStyle.valueSize=sizeof(lineSpace);
-        lineSpaceStyle.value=&lineSpace;
-        
+//
+//        //创建文本,    行间距
+//        CGFloat lineSpace=self.lineSpace;//间距数据
+//        CTParagraphStyleSetting lineSpaceStyle;
+//        lineSpaceStyle.spec=kCTParagraphStyleSpecifierLineSpacing;
+//        lineSpaceStyle.valueSize=sizeof(lineSpace);
+//        lineSpaceStyle.value=&lineSpace;
+//        
         //设置  line break;
         CTLineBreakMode linebreakmode = kCTLineBreakByTruncatingTail;
         CTParagraphStyleSetting linebreakStyle;
         linebreakStyle.spec = kCTParagraphStyleSpecifierLineBreakMode;
         linebreakStyle.valueSize = sizeof(CGFloat);
         linebreakStyle.value = &linebreakmode;
-        
-        
-        //设置  段落间距
-        CGFloat paragraph = self.paragraphSpace;
-        CTParagraphStyleSetting paragraphStylesetting;
-        paragraphStylesetting.spec = kCTParagraphStyleSpecifierParagraphSpacing;
-        paragraphStylesetting.valueSize = sizeof(CGFloat);
-        paragraphStylesetting.value = &paragraph;
-        
-        
-        
-        
+//
+//        
+//        //设置  段落间距
+//        CGFloat paragraph = self.paragraphSpace;
+//        CTParagraphStyleSetting paragraphStylesetting;
+//        paragraphStylesetting.spec = kCTParagraphStyleSpecifierParagraphSpacing;
+//        paragraphStylesetting.valueSize = sizeof(CGFloat);
+//        paragraphStylesetting.value = &paragraph;
+//        
+//        
+//        
+//        
         //创建样式数组
         CTParagraphStyleSetting settings[]={
-            alignmentStyle,lineSpaceStyle,paragraphStylesetting,linebreakStyle
+            alignmentStyle/*,linebreakStyle,lineSpaceStyle,paragraphStylesetting*/
         };
-        
+    
         //设置样式
         CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate(settings, sizeof(settings));
         
@@ -691,8 +691,8 @@
         [string addAttribute:(id)kCTParagraphStyleAttributeName
                        value:CFBridgingRelease(paragraphStyle)
                        range:NSMakeRange(0, [string length])];
-        
-    }
+    
+