在iPhone中使用静态内容和图像生成PDF

时间:2012-02-15 06:46:01

标签: iphone objective-c pdf-generation

这里我需要通过其中一个页面中的一些动态内容生成pdf文件,下一页包含图像,但我的代码生成为单页可以帮助我

此绘制文本方法用于生成动态内容

 - (void) drawText
    {
        CGContextRef    currentContext = UIGraphicsGetCurrentContext();
        CGContextSetRGBFillColor(currentContext, 0.0, 0.0, 0.0, 1.0);

        NSString *textToDraw=[[NSString alloc] initWithString:@""];
        for (int i=0; i<[fieldsArr count]; i++) 
        {
            textToDraw=[textToDraw stringByAppendingFormat:[NSString stringWithFormat:@"%@\t%@\n",[fieldsArr objectAtIndex:i],[valuesArr objectAtIndex:i]]];
        }


        textToDraw=[textToDraw stringByAppendingFormat:@"\n\n\n\n\n\n"];
        UIFont *font = [UIFont systemFontOfSize:14.0];

        CGSize stringSize = [textToDraw sizeWithFont:font
                                   constrainedToSize:CGSizeMake(pageSize.width - 2*kBorderInset-2*kMarginInset, pageSize.height - 2*kBorderInset - 2*kMarginInset) 
                                       lineBreakMode:UILineBreakModeWordWrap];

        CGRect renderingRect = CGRectMake(kBorderInset + kMarginInset, kBorderInset + kMarginInset + 50.0, pageSize.width - 2*kBorderInset - 2*kMarginInset, stringSize.height);

        [textToDraw drawInRect:renderingRect 
                      withFont:font
                 lineBreakMode:UILineBreakModeWordWrap
                     alignment:UITextAlignmentLeft];
    }

此方法用于绘制图像

 - (void) drawImage
    {
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];    
        NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:@"displayImage.jpg"];
        UIImage * demoImage = [UIImage imageWithContentsOfFile:getImagePath];
        [demoImage drawInRect:CGRectMake( (pageSize.width - demoImage.size.width/2)/2, 500, demoImage.size.width/2, demoImage.size.height/2)];
    }

此方法用于生成pdf文件

 - (void) generatePdfWithFilePath: (NSString *)thefilePath
    {
        UIGraphicsBeginPDFContextToFile(thefilePath, CGRectZero, nil);

        NSInteger currentPage = 0;
        BOOL done = NO;
        do 
        {
            //Start a new page.
            UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, pageSize.width, pageSize.height), nil);

            //Draw a page number at the bottom of each page.

            //Draw some text for the page.
            [self drawText];

            //Draw an image
            [self drawImage];
            done = YES;
        } 
        while (!done);

        // Close the PDF context and write the contents out.
        UIGraphicsEndPDFContext();
    }

请帮我分开不同页面中的文字和图片

2 个答案:

答案 0 :(得分:0)

检查您正在撰写的内容类型,如果它属于imageView,则启动新的pdf页面。

答案 1 :(得分:0)

当您想要绘制图像时添加新页面。这是更改代码,在此我已经在绘制图像之前添加了新页面

- (void) generatePdfWithFilePath: (NSString *)thefilePath
    {
        UIGraphicsBeginPDFContextToFile(thefilePath, CGRectZero, nil);

        NSInteger currentPage = 0;
        BOOL done = NO;
        do 
        {
            //Start a new page.
            UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, pageSize.width, pageSize.height), nil);

            //Draw a page number at the bottom of each page.

            //Draw some text for the page.
            [self drawText];

            //Again start a new page to Draw an image

           UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, pageSize.width, pageSize.height), nil);


            [self drawImage];
            done = YES;
        } 
        while (!done);

        // Close the PDF context and write the contents out.
        UIGraphicsEndPDFContext();
    }