首页 > 解决方案 > Objective C - 创建 PDF (Mac OSX / Cocoa)

问题描述

我正在按照本指南创建 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 *)filename;

我需要编写 -(void)myDrawContent:(CGContextRef) pdfContext; 我想在顶部设置一个 Tittle,在图像之后设置一个 NSImage 和一个 NSString,我该怎么做?

Adccionaly:为此,我找到了以下代码:

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];

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

标签: objective-ccocoaquartz-2dios-pdfkit

解决方案


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

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

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

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


推荐阅读