Как нарисовать на странице PDF с PDFKit - PullRequest
0 голосов
/ 13 июня 2018

В настоящее время я работаю над проектом, и мне нужно создать PDF на основе набора информации, введенной пользователем.

Я использую PDFKit, мне удалось создать PDFView и добавитьPDFДокумент к нему.Моя проблема в том, что я не смог найти способ рисовать на страницах документа, используя PDFKit.Я не хочу добавлять аннотации, я хочу рисовать таблицы и тексты внутри ячеек этой таблицы.

Я нашел несколько примеров, чтобы сделать это, но все они не были полными, и вам нужно иметь некоторые знания, чтобы действительно понять их.Я также нашел несколько примеров использования Quartz и Core Graphics, но я не знаю, смогу ли я применить его к PDFKit.

Мне нужен только пример рисования линии с использованием PDFKit.

Спасибо.

1 Ответ

0 голосов
/ 13 июня 2018
  1. Все, что вам нужно, это создать pdfData:

    -(NSMutableData *)createPDFData {
     // Creates a mutable data object for updating with binary data, like a byte   array
        NSMutableData *pdfData = [NSMutableData data];
    
    // Points the pdf converter to the mutable data object and to the UIView to be converted
    CGRect bounds = self.bounds;
    
    UIGraphicsBeginPDFContextToData(pdfData, CGRectZero, nil);
    UIGraphicsBeginPDFPageWithInfo(bounds, nil);
    
    CGContextRef    currentContext = UIGraphicsGetCurrentContext();
    
    [self drawBottomRect];
    
    [self drawImageView:self.ivBackground];
    
    // draw labels by section
    
    [self drawLabel:self.walletName];
    
    currentContext = UIGraphicsGetCurrentContext();
    
    // remove PDF rendering context
    UIGraphicsEndPDFContext();
    return pdfData;
    }
    
  2. Пример, как нарисовать представление изображения:

     -(void) drawImageView: (UIImageView*) imageView
     {
      CGContextRef    currentContext = UIGraphicsGetCurrentContext();
    
      CGRect frameRect =  [imageView convertRect:imageView.bounds  toView:self];
    
      CGContextTranslateCTM(currentContext, frameRect.origin.x,frameRect.origin.y);
      [imageView.layer renderInContext:currentContext];
       CGContextTranslateCTM(currentContext, -frameRect.origin.x,-   frameRect.origin.y);
     }
    
  3. Сохранить данные PDF в виде файла.

...