Создание PDF со статическим контентом и изображением в iPhone - PullRequest
0 голосов
/ 15 февраля 2012

Здесь мне нужно сгенерировать 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();
    }
* 1011.* Пожалуйста, помогите мне разделить текст и изображение на разных страницах

Ответы [ 2 ]

0 голосов
/ 14 апреля 2014

Добавьте новую страницу, когда вы хотите нарисовать изображение. Здесь измените код, в этом я добавил новую страницу, прежде чем изображение будет нарисовано

- (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();
    }
0 голосов
/ 15 февраля 2012

Проверьте тип контента, который вы пишете, если он принадлежит imageView, то откройте новую страницу PDF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...