IOS - PDF合并
#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;
}
最新文章
- DES &; 3DES 加密算法
- FUNCTION
- 《BI那点儿事》运用标准计分和离差——分析三国超一流统帅综合实力排名 绝对客观,数据说话
- 黑马程序员——【Java高新技术】——反射机制
- SharePoint 2013 Nintex Workflow 工作流帮助(八)
- HDOJ/HDU 1200 To and Fro(加密解密字符串)
- VPN拨号后使用本地网络上网
- arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-g++: Command not found 解决方法
- centos6.5搭建hadoop完整教程
- bugku web web3
- 二进制方式安装mysql5.7.24
- JS 单线程
- 设置通过Maven创建的工程的JDK版本—一劳永逸
- uoj #228. 基础数据结构练习题 线段树
- 1037C_ Equalize(字符串)
- Centos 集群配置SSH免登陆脚本
- Pycharm使用Git
- HCNP学习笔记之史上最全华为路由器交换机配置命令大合集
- facebook对xtrabackup的优化整理
- angular 事件广播和事件监听
热门文章
- 使用Requests+正则表达式爬取猫眼TOP100电影并保存到文件或MongoDB,并下载图片
- 00070_Calendar
- [using_microsoft_infopath_2010]Chapter13 SharePoint视图和控制板
- java的classLoader原理理解和分析
- rails undefined method error_messages
- [HTML5] Handle Offscreen Accessibility
- Flask + mod_wsgi + Apache on Windows 部署成功(随时接受提问)
- 杭电1018-Big Number(大数)
- 基于Linux环境Tomcat-MySQL的server搭建
- DatabaseMetaData开发实务