Xcode 7.3.2、Swift 2、Cocoa(Mac)。Swift with Cocoa(Mac)でPDFを作成する方法
私のアプリには、テキストを入力するユーザーが関わっており、PDFに書き出すことができます。私のアプリのiOSのバージョンで
、私はCoreText
フレームワークと、比較的簡単にPDFを作成することができます。
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)
をしかし、UIMarkupTextPrintFormatter
、UIPrintPageRenderer
、UIGraphicsBeginPDFContextToData
、そしてUIGraphicsEndPDFContext
すべてがどのようにOS X上では存在しません。私はこのiOSコード(いくつかのHTMLから基本的なPDFを作成し、それを特定のファイルパスにページ区切りPDFとして書き込む)とMacとCocoaを使って同じことをすることはできますか?
編集:この質問に対する回答はCreate a paginated PDF—Mac OS Xです。
https://developer.apple.com/library/mac/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_pdf/dq_pdf.html#//apple_ref/doc/uid/TP30001066-CH214-CJBHHJCB「PDFの作成」を参照してください。ファイル "を開始点として選択する。あなたはNSAttributedStringをHTMLから作り、それを描くことができます。 – zneak
私のコンピュータの前にはいませんが、NSGraphicsContextでどのようにCGContextRefを設定すれば、NSAttributedStringの描画メソッドを使うことができるでしょうか。 – zneak
より具体的な問題が発生した場合は、質問を編集してください。私は仕事中のWindowsマシン上にいる。 – zneak