如何将一个PDF合并到Swift 3.0中的另一个PDF文件中



我正在使用此代码。所以它崩溃了。请让我知道我在哪里做错了。令cachesdirectorypath = nssearchpathfordirectoriesIndomains(.cachesdirectory,.userdomainmask,true)[0] 令filepath1 ="(cachesdirectorypath)/showpdf_(self.airportmainid).pdf" 令filepath2 ="(cachesdirectorypath)/imagepdf_(self.airportmainid).pdf 令FILEPATH3 = CACHESDIRECTORYPATH.APPERDEND("/combine_(self.airportmainid).pdf")

self.mergetwopdf(filepath1:filepath1,filepath2:filepath2,combinepath2: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();
}

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

您应该使用:

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

最新更新