我在Objective-C(使用可可)中编写一个应用程序.我有一个PDF模板,我需要将实际值替换为PDF中的占位符,然后将结果保存到新的PDF中.
我该怎么做?我应该使用哪个库?
解决方法@H_301_6@
我找到了解决方案!它连接了quartz2d的功能和UIGraphics的简单性.
NSString *newFilePath = @"path/to/your/newfile.pdf";
NSString *templatePath = @"path/to/your/template.pdf";
//create empty pdf file;
UIGraphicsBeginPDFContextToFile(newFilePath,CGRectMake(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,-1.0);
/* Here you can do any drawings */
[@"Test" drawAtPoint:CGPointMake(200,300) withFont:[UIFont systemFontOfSize:20]];
}
CGPDFDocumentRelease(templateDocument);
UIGraphicsEndPDFContext();
NSString *newFilePath = @"path/to/your/newfile.pdf"; NSString *templatePath = @"path/to/your/template.pdf"; //create empty pdf file; UIGraphicsBeginPDFContextToFile(newFilePath,CGRectMake(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,-1.0); /* Here you can do any drawings */ [@"Test" drawAtPoint:CGPointMake(200,300) withFont:[UIFont systemFontOfSize:20]]; } CGPDFDocumentRelease(templateDocument); UIGraphicsEndPDFContext();