从NSView生成多页PDF

时间:2017-02-23 03:06:48

标签: swift pdf nsview

我有一个多页文档,我使用A4大小的NSView来显示单个页面(一次一个)。我使用“前进/后退”按钮来控制页面选择。因此,每次按下按钮,都会在NSView中重新绘制正确的页面。图纸很简单,所以也不错。

但我不知道如何生成多页PDF文档以包含我的所有页面。有人给了我一些代码来将NSView的内容转换为PDF,我使用该代码生成单页PDF,但我真的很想将所有页面绘制成单个PDF。

有人可以告诉我如何修改以下代码来执行此操作吗?非常感谢。

//////

     var fn: String = fnBase

    for i in 0...TotalPage - 1 {

        // This will tell DrawRect to draw page i
        view.displayedPage = i

        let bounds = CGRect(origin: CGPointZero, size: view.frame.size)
        let data: NSData = view.dataWithPDFInsideRect(bounds)

        fn = fnBase + "\(i+1).pdf"

        data.writeToFile(fn, atomically: true)
    }

1 个答案:

答案 0 :(得分:2)

我的解决方案:

import Quartz

var data = documentView.dataWithPDF(inside: NSMakeRect(0.0, 0.0, width, height))
let pdfDocument = PDFDocument(data: data)!

for i in 1..<pages {
    data = documentView.dataWithPDF(inside: NSMakeRect(0.0, CGFloat(i) * height, width, height))
    let pdfPage = PDFPage(image: NSImage(data: data)!)!
    pdfDocument.insert(pdfPage, at: pdfDocument.pageCount)
}