#pragma mark - Merge PDF

- (void)mergePDF

{

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *filePath1 = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"阅办卡.pdf"];

NSString *filePath2 = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"文件.pdf"];

NSArray *PDFURLS = [NSArray arrayWithObjects:filePath1,filePath2, nil];

[self joinPDF:PDFURLS];

}

- (NSString *)joinPDF:(NSArray *)listOfPaths {

// File paths

NSString *fileName = [NSString stringWithFormat:@"公文%d.pdf",arc4random_uniform(100)];

NSString *pdfPathOutput = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:fileName];

CFURLRef pdfURLOutput = (  CFURLRef)CFBridgingRetain([NSURL fileURLWithPath:pdfPathOutput]);

NSInteger numberOfPages = 0;

// Create the output context

CGContextRef writeContext = CGPDFContextCreateWithURL(pdfURLOutput, NULL, NULL);

for (NSString *source in listOfPaths) {

CFURLRef pdfURL = (  CFURLRef)CFBridgingRetain([[NSURL alloc] initFileURLWithPath:source]);

//file ref

CGPDFDocumentRef pdfRef = CGPDFDocumentCreateWithURL((CFURLRef) pdfURL);

numberOfPages = CGPDFDocumentGetNumberOfPages(pdfRef);

// Loop variables

CGPDFPageRef page;

CGRect mediaBox;

// Read the first PDF and generate the output pages

//        NSLog(@"GENERATING PAGES FROM PDF 1 (%@)...", source);

for (int i=1; i<=numberOfPages; i++) {

page = CGPDFDocumentGetPage(pdfRef, i);

mediaBox = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);

CGContextBeginPage(writeContext, &mediaBox);

CGContextDrawPDFPage(writeContext, page);

CGContextEndPage(writeContext);

}

CGPDFDocumentRelease(pdfRef);

CFRelease(pdfURL);

}

CFRelease(pdfURLOutput);

// Finalize the output file

CGPDFContextClose(writeContext);

CGContextRelease(writeContext);

return pdfPathOutput;

}

最新文章

  1. DES &amp; 3DES 加密算法
  2. FUNCTION
  3. 《BI那点儿事》运用标准计分和离差——分析三国超一流统帅综合实力排名 绝对客观,数据说话
  4. 黑马程序员——【Java高新技术】——反射机制
  5. SharePoint 2013 Nintex Workflow 工作流帮助(八)
  6. HDOJ/HDU 1200 To and Fro(加密解密字符串)
  7. VPN拨号后使用本地网络上网
  8. arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-g++: Command not found 解决方法
  9. centos6.5搭建hadoop完整教程
  10. bugku web web3
  11. 二进制方式安装mysql5.7.24
  12. JS 单线程
  13. 设置通过Maven创建的工程的JDK版本—一劳永逸
  14. uoj #228. 基础数据结构练习题 线段树
  15. 1037C_ Equalize(字符串)
  16. Centos 集群配置SSH免登陆脚本
  17. Pycharm使用Git
  18. HCNP学习笔记之史上最全华为路由器交换机配置命令大合集
  19. facebook对xtrabackup的优化整理
  20. angular 事件广播和事件监听

热门文章

  1. 使用Requests+正则表达式爬取猫眼TOP100电影并保存到文件或MongoDB,并下载图片
  2. 00070_Calendar
  3. [using_microsoft_infopath_2010]Chapter13 SharePoint视图和控制板
  4. java的classLoader原理理解和分析
  5. rails undefined method error_messages
  6. [HTML5] Handle Offscreen Accessibility
  7. Flask + mod_wsgi + Apache on Windows 部署成功(随时接受提问)
  8. 杭电1018-Big Number(大数)
  9. 基于Linux环境Tomcat-MySQL的server搭建
  10. DatabaseMetaData开发实务