1

我想通过将每个 PDF 的页面附加到单个 PDF 来将多个 PDF 合并为一个。该站点上相同问题的答案给出了以下代码(假设 inputDocuments 是 PDFDocuments 数组:

PDFDocument *outputDocument = [[PDFDocument alloc] init];
NSUInteger pageIndex = 0;
for (PDFDocument *inputDocument in inputDocuments) {
    for (PDFPage *page in inputDocument) {
        [outputDocument insertPage:page atIndex:pageIndex++];
    }
}

现在,我不知道 PDFDocument 类最初是否支持快速枚举,但现在似乎不支持。我尝试使用一系列带有单页 PDFDocuments 数组的 for 循环来做同样的事情,其中​​包含以下内容:

    PDFDocument *outputDocument = [[PDFDocument alloc] init];
    NSUInteger aPageCount=0;

    for (PDFConverter* aConverter in [self finishedPDFConverters])
    {
        [outputDocument insertPage:[[aConverter theDoc] pageAtIndex:0] atIndex:aPageCount];
        aPageCount++;
    }

但是我得到了错误

"2011-07-19 23:56:58.719 URLDownloader[37165:903] *** WebKit discarded an uncaught exception in the webView:didFinishLoadForFrame: delegate: <NSRangeException> *** -[NSCFArray insertObject:atIndex:]: index (1) beyond bounds (1)"

在添加了第一个文档之后,我最终得到了一个只有一页的 PDF。我该如何纠正这个问题?

4

2 回答 2

1

该错误与快速枚举无关。

您试图在超出范围(> 计数)的索引处插入页面。尝试替换insertPage:atIndex:addPage:

于 2011-07-20T05:25:36.380 回答
0

在长时间的中断后回到这个项目,我简单地通过从最后一个到第一个循环浏览 PDF,然后向后循环页面并将每个页面插入索引 0 来解决问题。令人费解,但它有效....

于 2011-12-19T23:27:36.753 回答