我有一个多页文档,我使用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)
}
答案 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)
}