繁体   English   中英

将pdf页面添加到现有的pdf objective-c

[英]Add pdf page to an existing pdf objective-c

我正在为iphone / ipad编写一个应用程序,它将摄像机图像(.png)转换为pdf并保存到/ user / documents文件夹。 现在我想弄清楚如何将另一个pdf附加到现有文档,以便它们将成为多页。 基本上,如果您将doc1.pdf和doc2.pdf保存在文档文件夹中,您将如何合并2个pdf,以便它们成为1个包含2个页面的文档?

感谢你们给我的任何帮助或建议。

谢谢,

以下是将pdf附加到另一个上的示例代码:

// Documents dir
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

// File paths
NSString *pdfPath1 = [documentsDirectory stringByAppendingPathComponent:@"pdf1.pdf"];
NSString *pdfPath2 = [documentsDirectory stringByAppendingPathComponent:@"pdf2.pdf"];
NSString *pdfPathOutput = [documentsDirectory stringByAppendingPathComponent:@"pdfout.pdf"];

// File URLs
CFURLRef pdfURL1 = (CFURLRef)[[NSURL alloc] initFileURLWithPath:pdfPath1];
CFURLRef pdfURL2 = (CFURLRef)[[NSURL alloc] initFileURLWithPath:pdfPath2];
CFURLRef pdfURLOutput = (CFURLRef)[[NSURL alloc] initFileURLWithPath:pdfPathOutput];

// File references
CGPDFDocumentRef pdfRef1 = CGPDFDocumentCreateWithURL((CFURLRef) pdfURL1);
CGPDFDocumentRef pdfRef2 = CGPDFDocumentCreateWithURL((CFURLRef) pdfURL2);

// Number of pages
NSInteger numberOfPages1 = CGPDFDocumentGetNumberOfPages(pdfRef1);
NSInteger numberOfPages2 = CGPDFDocumentGetNumberOfPages(pdfRef2);

// Create the output context
CGContextRef writeContext = CGPDFContextCreateWithURL(pdfURLOutput, NULL, NULL);

// Loop variables
CGPDFPageRef page;
CGRect mediaBox;

// Read the first PDF and generate the output pages
NSLog(@"Pages from pdf 1 (%i)", numberOfPages1);
for (int i=1; i<=numberOfPages1; i++) {
  page = CGPDFDocumentGetPage(pdfRef1, i);
  mediaBox = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);
  CGContextBeginPage(writeContext, &mediaBox);
  CGContextDrawPDFPage(writeContext, page);
  CGContextEndPage(writeContext);
}

// Read the second PDF and generate the output pages
NSLog(@"Pages from pdf 2 (%i)", numberOfPages2);
for (int i=1; i<=numberOfPages2; i++) {
  page = CGPDFDocumentGetPage(pdfRef2, i);
  mediaBox = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);
  CGContextBeginPage(writeContext, &mediaBox);
  CGContextDrawPDFPage(writeContext, page);
  CGContextEndPage(writeContext); 
}
NSLog(@"Done");

// Finalize the output file
CGPDFContextClose(writeContext);

// Release from memory
CFRelease(pdfURL1);
CFRelease(pdfURL2);
CFRelease(pdfURLOutput);
CGPDFDocumentRelease(pdfRef1);
CGPDFDocumentRelease(pdfRef2);
CGContextRelease(writeContext);

资源

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM