позиционирование элементов при создании PDF на iOS - PullRequest
1 голос
/ 27 июня 2011

Я создаю PDF-файл в своем приложении для ipad, и мне нужно добавить разрывы страниц, поэтому я также должен перемещать элементы, прежде чем отобразить вторую страницу. Например, мое длинное табличное представление нужно будет отрегулировать по вертикали, прежде чем я отобразлю вторую, третью страницу и т. Д.

Создание PDF довольно простое, и у меня есть эта часть, и первая страница генерируется отлично, но когда я пытаюсь установить свой фрейм, чтобы переместить мой просмотр таблицы на следующую страницу, ничего не происходит:

    -(void) createPDF {

        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"tmp.pdf"];

        CGContextRef pdfContext = [self createPDFContext:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height) path:(CFStringRef)writableDBPath];

        NSLog(@"PDF Context created");
        CGContextBeginPage (pdfContext,nil); // 6

        //turn PDF upsidedown
        CGAffineTransform transform = CGAffineTransformIdentity;
        transform = CGAffineTransformMakeTranslation(0, self.view.bounds.size.height);
        transform = CGAffineTransformScale(transform, 1.0, -1.0);
        CGContextConcatCTM(pdfContext, transform);

        //Draw view into PDF
        self.view.frame=CGRectMake(0, 0,self.view.bounds.size.width, self.view.bounds.size.height);
        [self.view.layer renderInContext:pdfContext];

        CGContextEndPage (pdfContext);// 8

        CGContextBeginPage (pdfContext,nil);

        //turn PDF upsidedown
        CGContextConcatCTM(pdfContext, transform);

      // moving the table to an arbitrary position for testing, nothing happens in the PDF - view itself is updated
         self.itemsTableView.frame = CGRectMake(100, 100, self.view.bounds.size.width, self.view.bounds.size.height);
        [self.itemsTableView.layer renderInContext:pdfContext];

        CGContextEndPage (pdfContext);// 8

        CGContextRelease (pdfContext);
    }

1 Ответ

0 голосов
/ 02 ноября 2011

Если в вашем приложении есть возможность использовать облачный сервис для создания PDF, взгляните на Docmosis .PDF основан на шаблоне документа, поэтому вы можете контролировать разрывы страниц и т. Д., Не вычисляя его в коде.Ваше приложение должно отправить запрос и данные, чтобы заполнить документ и доставить PDF, чтобы оно зависело от подключения.

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