뷰로부터 pdf 데이터 얻기
AppKit의 모든 그리기 명령은 PDF로 변환가능하다. 그리고 이렇게 변환된 PDF 데이터는 프린터로 보내지거나 파일에 기록될 수 있다. PDF는 해상도에 의존하지 않기 때문에 어느 기기에서 봐도 제법 괜찮은 품질을 보여준다는 점을 잊지 말자.
draw:
를 사용해서 뷰를 그리는 것을 할 수 있다면, PDF는 공짜로 얻을 수 있다. 이 방법은 매우 쉬운데 NSView
는 다음과 같은 메소드를 가지고 있다.
func dataWithPDF(inside: NSRect) -> Data
이 메소드는 draw(:)
를 호출해서 이를 통해 그래픽 데이터를 얻는다. 뷰 그리기 명령에서 얻어지는 모든 내역은 화면이 아닌 데이터 객체로 들어간다. 이렇게 얻은 내용은 간단히 파일에 저장할 수 있다.
@IBAction func savePDF(_ sender: Any) {
let panel = NSSavePanel()
panel.allowedFileTypes = ["pdf"]
panel.allowsOtherFileTypes = false
panel.beginSheetModal(for: window!) { clicked in
if clicked == NSFileHandleingPanelOKButton, let url = panel.url {
let data = self.dataWithPDF(inside: self.bounds)
do {
try data.write(to:url)
} catch {
let a = NSAlert(error: error as! NSError)
a.runModal()
}
}
}
}