Como criar um PDF no Swift com Cocoa (Mac)
Xcode 7.3.2, Swift 2, cacau (Mac).
Meu aplicativo envolve o usuário digitando algum texto, que pode ser exportado para um PDF.
Na versão iOS do meu aplicativo, posso criar o PDF com relativa facilidade com oCoreText
estrutura:
let html = "<font face=\'Futura\' color=\"SlateGray\"><h2>\(title)</h2></font><font face=\"Avenir\" color=\"SlateGray\"><h4>\(string)</h4></font>"
let fmt = UIMarkupTextPrintFormatter(markupText: html)
// 2. Assign print formatter to UIPrintPageRenderer
let render = UIPrintPageRenderer()
render.addPrintFormatter(fmt, startingAtPageAt: 0)
// 3. Assign paperRect and printableRect
let page = CGRect(x: 10, y: 10, width: 595.2, height: 841.8) // A4, 72 dpi, margin of 10 from top and left.
let printable = page.insetBy(dx: 0, dy: 0)
render.setValue(NSValue(cgRect: page), forKey: "paperRect")
render.setValue(NSValue(cgRect: printable), forKey: "printableRect")
// 4. Create PDF context and draw
let pdfData = NSMutableData()
UIGraphicsBeginPDFContextToData(pdfData, CGRect.zero, nil)
for i in 1...render.numberOfPages {
UIGraphicsBeginPDFPage();
let bounds = UIGraphicsGetPDFContextBounds()
render.drawPage(at: i - 1, in: bounds)
}
UIGraphicsEndPDFContext();
// 5. Save PDF file
path = "\(NSTemporaryDirectory())\(title).pdf"
pdfData.write(toFile: path, atomically: true)
Contudo,UIMarkupTextPrintFormatter
, UIPrintPageRenderer
, UIGraphicsBeginPDFContextToData
eUIGraphicsEndPDFContext
nem tudo existe no OS X. Como posso fazer exatamente a mesma coisa que faço com este código do iOS (criar um PDF básico a partir de algum HTML e gravá-lo em um determinado caminho de arquivo como um PDF paginado) com Mac e Cocoa?
EDITAR: A resposta para esta pergunta está aqui:Crie um PDF paginado - Mac OS X.