如何在swift 3.0中将一个pdf合并到另一个pdf文件中。?

时间:2017-03-05 06:32:51

标签: pdf swift3

我正在使用此代码。但pdfDocumentRef3即将发布。它崩溃了。 请让我知道我在哪里做错了。 让cachesDirectoryPath = NSSearchPathForDirectoriesInDomains(.cachesDirectory,.userDomainMask,true)[0]  let filePath1 =“(cachesDirectoryPath)/ ShowPdf_(self.airportMainId).pdf”  let filePath2 =“(cachesDirectoryPath)/ ImagePdf_(self.airportMainId).pdf  让filePath3 = cachesDirectoryPath.appending(“/ Combine_(self.airportMainId).pdf”)

self.mergeTwoPDF(filePath1:filePath1,filePath2:filePath2,combinePath:filePath3)

func mergeTwoPDF(filePath1: String, filePath2: String, combinePath: String) {

    let pdfURL1 = NSURL(fileURLWithPath: filePath1)

    let pdfURL2 = NSURL(fileURLWithPath: filePath2)

    let pdfURL3 = NSURL(fileURLWithPath: combinePath)

    let pdfDocumentRef1 = CGPDFDocument(pdfURL1 as CFURL)

    let pdfDocumentRef2 = CGPDFDocument(pdfURL2 as CFURL)

    let pdfDocumentRef3 = CGPDFDocument(pdfURL3 as CFURL)

    let numberOfPages1 = pdfDocumentRef1!.numberOfPages

    let numberOfPages2 = pdfDocumentRef2!.numberOfPages

    let writeContext = CGContext(pdfDocumentRef3 as! CFURL, mediaBox: nil, nil)

    var page: CGPDFPage?
    var mediaBox: CGRect
    for var i in 0..<numberOfPages1 {
            page = pdfDocumentRef1!.page(at: i)
            mediaBox = page!.getBoxRect(.mediaBox)
            writeContext!.beginPage(mediaBox: &mediaBox)
        writeContext!.drawPDFPage(page!)
        writeContext!.endPage()
    }
    for var i in 0..<numberOfPages2 {
        page = pdfDocumentRef2!.page(at: i)
        mediaBox = page!.getBoxRect(.mediaBox)
        writeContext!.beginPage(mediaBox: &mediaBox)
        writeContext!.drawPDFPage(page!)
        writeContext!.endPage()
    }

    writeContext!.closePDF();
}

1 个答案:

答案 0 :(得分:0)

pdfDocumentRef3为零,因为该文件不存在。

您应该使用:

UIGraphicsBeginPDFContextToFile(combinePath, CGRect.zero, nil)
let writeContext = UIGraphicsGetCurrentContext()