将创建PDF文档从iOS移植到Mac OS X [英] Porting creation of a PDF document from iOS to Mac OS X
问题描述
我正在将我的代码从iPhone移植到Mac,我不知道如何在Mac中做到这一点.这是我要转换的代码,我知道Mac中没有UIGraphic.有人可以给我指出指南或给我快速提示吗?谢谢.
I am porting my code from iPhone to Mac and I have no idea how I can do this in Mac. Here's my code that I am trying to convert and I know that there's no UIGraphic in Mac. Can someone point me to a guide or give me a quick hint? Thanks.
NSString *newFilePath = @"path/to/your/newfile.pdf";
NSString *templatePath = @"path/to/your/template.pdf";
//create empty pdf file;
UIGraphicsBeginPDFContextToFile(newFilePath, CGRectMake(0, 0, 792, 612), nil);
CFURLRef url = CFURLCreateWithFileSystemPath (NULL, (CFStringRef)templatePath, kCFURLPOSIXPathStyle, 0);
//open template file
CGPDFDocumentRef templateDocument = CGPDFDocumentCreateWithURL(url);
CFRelease(url);
//get amount of pages in template
size_t count = CGPDFDocumentGetNumberOfPages(templateDocument);
//for each page in template
for (size_t pageNumber = 1; pageNumber <= count; pageNumber++) {
//get bounds of template page
CGPDFPageRef templatePage = CGPDFDocumentGetPage(templateDocument, pageNumber);
CGRect templatePageBounds = CGPDFPageGetBoxRect(templatePage, kCGPDFCropBox);
//create empty page with corresponding bounds in new document
UIGraphicsBeginPDFPageWithInfo(templatePageBounds, nil);
CGContextRef context = UIGraphicsGetCurrentContext();
//flip context due to different origins
CGContextTranslateCTM(context, 0.0, templatePageBounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
//copy content of template page on the corresponding page in new file
CGContextDrawPDFPage(context, templatePage);
//flip context back
CGContextTranslateCTM(context, 0.0, templatePageBounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
/* Here you can do any drawings */
[@"Test" drawAtPoint:CGPointMake(200, 300) withFont:[UIFont systemFontOfSize:20]];
}
CGPDFDocumentRelease(templateDocument);
UIGraphicsEndPDFContext();
推荐答案
使用CGPDFContextCreateWithURL
代替UIGraphicsBeginPDFContextToFile
(参数非常相似).要开始/结束页面,请使用CGPDFContextBeginPage
和CGPDFContextEndPage
.完成后,呼叫CGPDFContextClose
而不是UIGraphicsEndPDFContext
.
Use CGPDFContextCreateWithURL
instead of UIGraphicsBeginPDFContextToFile
(the parameters are very similar). To begin/end pages, use CGPDFContextBeginPage
and CGPDFContextEndPage
. When you're done, call CGPDFContextClose
instead of UIGraphicsEndPDFContext
.
其余部分可以保持不变-iOS和Mac OS X上都存在核心图形-这也意味着如果要在两个平台上使用相同的代码,也可以使用上面在iOS上提到的功能
The rest can remain the same – Core Graphics exists on both iOS and Mac OS X – which also means that you could use the functions I've mentioned above on iOS as well if you want to use the same code on both platforms.
这篇关于将创建PDF文档从iOS移植到Mac OS X的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!