2017-02-23 108 views
0

我有一个多页文档,并且我使用A4大小的NSView来显示一个页面(一次一个)。我使用“向前/向后”按钮来控制页面选择。所以每次按下按钮,都会在NSView中重新绘制正确的页面。图纸很简单,所以不会太差。从NSView生成多页PDF

但我不知道如何生成一个多页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

我的解决方案:

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) 
} 
+0

非常感谢。 Tecalto。这真的解决了我的问题。非常感激。格雷厄姆 –