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

Posted

技术标签:

【中文标题】如何在 swift 3.0. 中将一个 pdf 合并到另一个 pdf 文件中?【英文标题】:How to merge one pdf into another pdf file in swift 3.0.? 【发布时间】:2017-03-05 06:32:51 【问题描述】:

我正在使用此代码。但 pdfDocumentRef3 将为零。所以它崩溃了。 请让我知道我在哪里做错了。 让 cachesDirectoryPath = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)[0] 让 filePath1 = "(cachesDirectoryPath)/ShowPdf_(self.airportMainId).pdf" 让 filePath2 = "(cachesDirectoryPath)/ImagePdf_(self.airportMainId).pdf let 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】:

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

你应该使用:

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

【讨论】:

以上是关于如何在 swift 3.0. 中将一个 pdf 合并到另一个 pdf 文件中?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift 2.0 中将 .pdf 文件转换为 base64 字符串?

在swift 3中将字节数组转换为PDF

[pdf不能合并成一个pdf]多个pdf如何合并成一个pdf

在 Swift 中将 UIView 保存和检索为 NSData

[wps如何把多个pdf合并成一个pdf]多个PDF合并成一个PDF文件的简单方法

使用 PDFOutline 在 Swift/Cocoa 中将 TOC 添加到 PDFDocument