Objective C - 创建 PDF (Mac OSX / Cocoa)

0 cocoa objective-c quartz-2d ios-pdfkit

我正在按照本指南创建 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; 代码 我想在顶部设置一个标题,在图像后面设置一个 NSImage 和一个 NSString,我该怎么做?

Addictionaly:为此我找到了这段代码:

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];
Run Code Online (Sandbox Code Playgroud)

它使用 NSImage 创建一个 pdf,但我如何添加文本?谢谢

Mar*_*zyk 5

PDFKit 类喜欢PDFDocumentPDFPage不允许您添加文本。如果需要创建带有文本的PDF,可以使用CGContextQuartz框架中的数据结构创建PDF上下文来创建PDF文件,并使用Core Text在PDF上下文中绘制文本。

要创建 PDF 上下文,请创建一个CGContext对象。您必须提供 PDF 文件的 URL。第二个参数是一个指定页面大小的矩形。如果您想要标准的 8.5 x 11 英寸页面,则可以传递 NULL。第三个也是最后一个参数是可选的辅助信息字典。您可以为此选项传递 NULL。

调用该CGContext函数beginPDFPage来创建一个可以在其中绘图的 PDF 页面。绘制您的图像。对于少量文本,调用核心文本函数CTLineCreateWithAttributedString为文本创建一行。调用 Core Text 函数CTLineDraw在 PDF 上下文中绘制文本。如果要绘制大量文本,则需要创建核心文本框架设置程序并使用它来创建和绘制文本框架。

调用该CGContext函数endPDFPage完成页面绘制。重复调用beginPDFPageendPDFPage来绘制其他页面。完成后,调用该CGContext函数closePDF关闭 PDF 上下文并保存 PDF 文件。