Цель C - Создать PDF (Mac OSX / Какао)
Я следую этому руководству по созданию PDF, но не понимаю, что мне нужно кодировать в функции myDrawnContent: https://developer.apple.com/library/archive/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_pdf/dq_pdf.html
Используя это руководство, я могу создать PDF с функцией:
- (void) MyCreatePDFFile: (CGRect) pageRect filename: (const char *) filename;
Мне нужно кодировать -(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 ответ
Классы 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.