Цель C - Создать PDF (Mac OSX / Какао) - PullRequest
0 голосов
/ 21 января 2019

Я следую этому руководству по созданию PDF, но не понимаю, что мне нужно кодировать в функции myDrawnContent: https://developer.apple.com/library/archive/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_pdf/dq_pdf.html#//apple_ref/doc/uid/TP30001066-CH214-CJBFFHHA

Используя это руководство, я могу создать PDF-файл с функцией:

- (void) MyCreatePDFFile: (CGRect) имя файла pageRect: (const char *) имя файла;

Мне нужно кодировать - (void) myDrawContent: (CGContextRef) pdfContext; Я хочу установить Tittle сверху, NSImage и NSString после образа, как мне это сделать?

Adiccionaly: для этого я нашел этот код:

NSString * path = @"/Users/admin/Downloads/prueba.pdf";
PDFDocument * pdf = [[PDFDocument alloc]init];
NSImage *image = [self getRepImage];
PDFPage * page = [[PDFPage alloc ] initWithImage:image];
[pdf insertPage:page atIndex: [pdf pageCount]];
[pdf writeToFile:path];

Он создает PDF с NSImage, но как мне добавить текст? Спасибо

1 Ответ

0 голосов
/ 22 января 2019

Классы PDFKit, такие как PDFDocument и PDFPage, не позволяют добавлять текст. Если вам нужно создать PDF с текстом, используйте структуру данных CGContext в платформе Quartz для создания контекста PDF для создания файла PDF и используйте Core Text для рисования текста в контексте PDF.

Чтобы создать контекст PDF, создайте объект CGContext. Вы должны предоставить URL для файла PDF. Второй аргумент - это прямоугольник, который определяет размер страницы. Если вам нужна стандартная страница размером 8,5 на 11 дюймов, вы можете передать значение NULL. Третий и последний аргумент - необязательный словарь вспомогательной информации. Вы можете передать NULL для этой опции.

Вызовите функцию CGContext beginPDFPage, чтобы создать страницу PDF, которую вы можете рисовать. Нарисуйте свое изображение. Для небольших объемов текста вызовите функцию Core Text CTLineCreateWithAttributedString, чтобы создать строку для текста. Вызовите функцию Core Text CTLineDraw, чтобы нарисовать текст в контексте PDF. Если у вас есть большие объемы текста для рисования, вам необходимо создать базовый фрейм-установщик основного текста и использовать его для создания и рисования рамок текста.

Вызовите функцию CGContext endPDFPage, чтобы закончить рисование страницы. Повторите вызовы к beginPDFPage и endPDFPage, чтобы нарисовать дополнительные страницы. Когда вы закончите, вызовите функцию CGContext closePDF, чтобы закрыть контекст PDF и сохранить файл PDF.

...