我正在按照本指南创建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:
-(无效)MyCreatePDFFile:(CGRect)pageRect文件名:(const char *)文件名;
我需要编码-(void)myDrawContent:(CGContextRef)pdfContext;我想在图像顶部设置标题,在图像之后设置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];
它使用NSImage创建pdf,但是我如何添加文本? 谢谢
答案 0 :(得分:1)
诸如PDFDocument
和PDFPage
之类的PDFKit类不允许您添加文本。如果需要使用文本创建PDF,请使用Quartz框架中的数据结构CGContext
创建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
完成页面绘制。重复对beginPDFPage
和endPDFPage
的调用以绘制其他页面。完成后,调用CGContext
函数closePDF
以关闭PDF上下文并保存PDF文件。