Ios 航空打印pdf页面
我需要用airprint从PDF打印几页,并在其中添加一个覆盖图像 我知道如何打印整个pdf,但我需要的是只打印用户选择的页面 应该是这样的Ios 航空打印pdf页面,ios,objective-c,pdf,airprint,Ios,Objective C,Pdf,Airprint,我需要用airprint从PDF打印几页,并在其中添加一个覆盖图像 我知道如何打印整个pdf,但我需要的是只打印用户选择的页面 应该是这样的 [printPages:[NSArray arrayWithObjects:1,2,5,6,9,11]] 所以我只能打印那些PDF页面的文档 我需要在页面中添加一些覆盖图像:D 你知道这是否可能吗 提前谢谢你 我终于创建了这个函数 -(void) splitPdf:(NSArray*) pages andNewFilePath:(NSString*)ne
[printPages:[NSArray arrayWithObjects:1,2,5,6,9,11]]
所以我只能打印那些PDF页面的文档
我需要在页面中添加一些覆盖图像:D
你知道这是否可能吗
提前谢谢你 我终于创建了这个函数
-(void) splitPdf:(NSArray*) pages andNewFilePath:(NSString*)newFilePath andShouldRotate:(BOOL) shouldRotate andShouldPrintHoles:(BOOL)shouldPrintHoles{
UIImage *holes;
if(shouldRotate) holes = [UIImage imageNamed:@"holes_rotated.png"];
else holes = [UIImage imageNamed:@"holes.png"];
//create empty pdf file;
UIGraphicsBeginPDFContextToFile(newFilePath, CGRectMake(0, 0, 792, 612), nil);
CGPDFDocumentRef templateDocument = mPdf;
//get amount of pages in template
size_t count = CGPDFDocumentGetNumberOfPages(templateDocument);
//for each page in template
for(int i = 0; i< [pages count]; i = i+2){
//get bounds of template page
int pageNumber = [((NSNumber*)[pages objectAtIndex:i]) intValue];
if (pageNumber <= count){
CGPDFPageRef templatePage = CGPDFDocumentGetPage(templateDocument,pageNumber);
CGPDFPageRef templatePage2 = CGPDFDocumentGetPage(templateDocument,pageNumber+1);
CGRect templatePageBounds = CGPDFPageGetBoxRect(templatePage, kCGPDFCropBox);
//create empty page with corresponding bounds in new document
//UIGraphicsBeginPDFPageWithInfo(templatePageBounds, nil);
float margin = templatePageBounds.size.width*MARGIN_PROPORTION;
CGRect newRect = CGRectMake(0, 0, templatePageBounds.size.width + margin, templatePageBounds.size.height*A4_PROPORTION + margin);
UIGraphicsBeginPDFPageWithInfo(newRect, nil);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
if(shouldRotate){
CGContextTranslateCTM( context, 0.5f * templatePageBounds.size.width, 0.5f * templatePageBounds.size.height) ;
CGContextRotateCTM(context, radians(90));
CGContextTranslateCTM( context, -0.5f * templatePageBounds.size.width, -0.5f * templatePageBounds.size.height) ;
}
//flip context due to different origins
if(!shouldRotate){
CGContextTranslateCTM(context,75, templatePageBounds.size.height + 130);
CGContextScaleCTM(context, 0.75, -0.75);
}
else{
CGContextTranslateCTM(context,-100, templatePageBounds.size.height - 70);
CGContextScaleCTM(context, 0.75, -0.75);
}
//Center the image with margins
if(!shouldRotate) CGContextTranslateCTM(context, margin*0.5f, -margin*A4_PROPORTION);
else CGContextTranslateCTM(context, margin*A4_PROPORTION,margin*0.5f);
CGContextDrawPDFPage(context, templatePage); //copy content of template page on the corresponding page in new file
if(!shouldRotate) CGContextTranslateCTM(context, 0,538);
else CGContextTranslateCTM(context, 538,0);
CGContextDrawPDFPage(context, templatePage2);
CGContextRestoreGState(context); //Restore state
/* Here you can do any drawings */
if(shouldPrintHoles){
CGContextMoveToPoint(context, 0, 0);
if(!shouldRotate) {
[holes drawAtPoint:CGPointMake(0, ((templatePageBounds.size.height*A4_PROPORTION+margin) * 0.5f) - holes.size.height*0.5f)];
}
else{
[holes drawAtPoint:CGPointMake(((templatePageBounds.size.width*A4_PROPORTION+margin) * 0.5f) - holes.size.width*0.5f,0)];
}
}
}
else{
NSLog(@"Page to split is bigger than number of pages of the document");
}
}
UIGraphicsEndPDFContext();
}