Как добавить аннотацию в мой PDF-файл, используя цель c? - PullRequest
0 голосов
/ 05 августа 2020

Я новичок в объективе c и фреймворке Apple PdfKit, и я не могу рисовать аннотации поверх моего pdf.

Я не получаю ошибок на консоли. Это мой код:

PDFAnnotation  * observation = [[PDFAnnotation alloc] init];
CGRect cgRect = CGRectMake(20, 20, 120, 120);
                
observation.widgetFieldType = PDFAnnotationWidgetSubtypeButton;
observation.bounds = cgRect;
observation.shouldDisplay = true;
observation.backgroundColor = UIColor.redColor;
observation.widgetFieldType= PDFAnnotationWidgetSubtypeButton;
                
[page addAnnotation:observation];

Кто-нибудь знает, почему моя pdf-аннотация не отображается на моем pdf-файле? Мне также интересно, полностью ли поддерживается фреймворк PdfKit для цели c, поскольку в документации Apple для него есть только примеры, сделанные с использованием swift.

Спасибо за вашу помощь!

1 Ответ

1 голос
/ 05 августа 2020

Ваша аннотация не отображается, потому что вы забыли установить type. Вероятно, это ошибка, потому что вы дважды устанавливаете widgetFieldType. Вот правильная настройка виджета кнопки:

PDFAnnotation  *observation = [[PDFAnnotation alloc] init];
observation.bounds = CGRectMake(20, 20, 200, 100);

observation.type = PDFAnnotationSubtypeWidget;
observation.widgetFieldType = PDFAnnotationWidgetSubtypeButton;
observation.widgetControlType = kPDFWidgetCheckBoxControl;

observation.backgroundColor = UIColor.redColor;
[page addAnnotation:observation];

Чтобы избежать ошибок, подобных этой, в будущем, используйте следующий инициализатор:

- (instancetype)initWithBounds:(CGRect)bounds 
                       forType:(PDFAnnotationSubtype)annotationType 
                withProperties:(NSDictionary *)properties;

И измените код настройки на:

PDFAnnotation  *observation = [[PDFAnnotation alloc] initWithBounds:CGRectMake(20, 20, 200, 100)
                                                            forType:PDFAnnotationSubtypeWidget
                                                     withProperties:nil];
observation.widgetFieldType = PDFAnnotationWidgetSubtypeButton;
observation.widgetControlType = kPDFWidgetCheckBoxControl;
observation.backgroundColor = UIColor.redColor;
    
[page addAnnotation:observation];

Я настоятельно рекомендую настроить внешний вид (например, backgroundColor) в последнюю очередь. Поскольку все эти значения изменяются PDFKit при изменении типа.

Также имейте в виду, что 0, 0 - это нижний / левый угол (bounds).

...