iphone - 将多个 pdf 文档合并为单个文档不起作用
<p><p>我正在尝试将 11 个 pdf 文件合并为一个 pdf 文件。我正在使用以下代码,但在最终的 pdf 中仅显示第一个 pdf ...我在循环中记录了 pdfurls 和 CGPDFDocumentRef,它们是不是一直为零(在循环中)。可能是什么原因导致最终文档中只显示第一页</p>
<pre><code>-(void)mergeDocuments
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = ; // Get documents folder
NSString *oldFile=;
NSMutableData *data=[ init];
CGRect paperSize=CGRectMake(0,0,kDefaultPageWidth,kDefaultPageHeight);
UIGraphicsBeginPDFContextToData(data, paperSize, nil);
for (int pageNumber = 1; pageNumber <= 11; pageNumber++)
{
NSString *pdfPath = [] retain];
NSURL *pdfUrl = [ retain];
UIGraphicsBeginPDFPageWithInfo(paperSize, nil);
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(currentContext, 0, paperSize.size.height);
CGContextScaleCTM(currentContext, 1.0, -1.0);
CGPDFDocumentRef newDocument = CGPDFDocumentCreateWithURL ((CFURLRef) pdfUrl);
CGPDFPageRef newPage = CGPDFDocumentGetPage (newDocument, pageNumber);
CGContextDrawPDFPage (currentContext, newPage);
newPage = nil;
CGPDFDocumentRelease(newDocument);
newDocument = nil;
;
}
NSURL *finalUrl=;
UIGraphicsEndPDFContext();
;
}
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>看起来您的代码假定每个文档中只有一页,但是它在打开每个文件时要求页面 <code>pageNumber</code>,因此要求 page_1 中的第 1 页.pdf、page_2.pdf 中的第 2 页、page_3.pdf 中的第 3 页等...</p>
<p>如果您只想从每个文档的第一页更改此:</p>
<pre><code>CGPDFPageRef newPage = CGPDFDocumentGetPage (newDocument, pageNumber);
</code></pre>
<p>对此:</p>
<pre><code>CGPDFPageRef newPage = CGPDFDocumentGetPage (newDocument, 1);
</code></pre>
<p>为了它的值(value),在我发现这个之前,我根据我已经拥有的一个例程重新编写了你的例程(请原谅我,但它是在一个 ARC 项目中,所以你必须重新进行内存管理)如下:</p>
<p><strong>(注意:已删除错误检查以使代码更具可读性!)</strong></p>
<pre><code>-(void)mergeDocuments {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = ;
NSString *oldFilePath=;
NSURL *oldFileUrl = ;
CGContextRef context = CGPDFContextCreateWithURL((__bridge_retained CFURLRef)oldFileUrl, NULL, NULL);
for (int docNumber = 1; docNumber <= 11; docNumber++)
{
// Get the first page from each source document
NSString *pdfPath = ];
NSURL *pdfUrl = ;
CGPDFDocumentRef pdfDoc = CGPDFDocumentCreateWithURL((__bridge_retained CFURLRef)pdfUrl);
CGPDFPageRef pdfPage = CGPDFDocumentGetPage(pdfDoc, 1);
CGRect pdfCropBoxRect= CGPDFPageGetBoxRect(pdfPage, kCGPDFMediaBox);
// Copy the page to the new document
CGContextBeginPage(context, &pdfCropBoxRect);
CGContextDrawPDFPage(context, pdfPage);
// Close the source files
CGContextEndPage(context);
CGPDFDocumentRelease(pdfDoc);
}
// Cleanup
CGContextRelease(context);
}
</code></pre></p>
<p style="font-size: 20px;">关于iphone - 将多个 pdf 文档合并为单个文档不起作用,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/9668047/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/9668047/
</a>
</p>
页:
[1]